Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 머신러닝
- 코틀린
- VSCode
- softeer
- GDSC
- 현대sw
- SWIFT
- programers
- 아마존 웹 서비스
- DART
- 안드로이드
- 자바
- 알고리즘
- Flutter
- 프로그래머스
- java
- kotlin
- 파이썬
- 다트
- 백준
- 플러터
- 소프티어
- 코테
- MVVM
- Android
- baekjoon
- aws
- 스위프트
- 개발
- Python
Archives
- Today
- Total
조준장 개발자 생존기
[baekjoon] 백준 17204번(파이썬): 죽음의 게임 본문
문제
17204번: 죽음의 게임
중앙대학교 소프트웨어대학 새내기들을 맞이하게 된 17학번 김영기는 두 학번이라는 차이를 극복하기 위해 새내기들과 친해지려고 노력하고 있다. 그 노력 중 하나는 바로 새내기들과의 술자
www.acmicpc.net
알고리즘
- bfs 탐색을 통해 문제를 수행한다.
- 사람의 수만큼 반복하여 탐색한다.
- 탐색하는 번호가 보성이의 번호이면 현재 지목 횟수를 리턴 받는다.
- 사람 수만큼 지목이 끝난 후에도 보성이의 번호를 탐색하지 못했다면 -1을 리턴 받는다.
코드
import sys
from collections import deque
# bfs 탐색
def bfs(v):
queue = deque([v])
cnt = 0
# 사람의 수만큼 반복하여 지목한 사람을 확인
for _ in range(n):
target = queue.popleft()
cnt += 1 # 지목 횟수 카운트
# 지목한 사람이 보성이의 번호이면 지목 횟수를 리턴
if graph[target] == k:
return cnt
# 지목한 번호를 다시 큐에 추가하여 반복
queue.append(graph[target])
# 사람 수만큼 지목이 끝난 후에도 보성이의 번호가 아니면 -1 리턴
return -1
n, k = map(int, sys.stdin.readline().split())
graph = [int(sys.stdin.readline()) for _ in range(n)]
# 0번부터 지목
print(bfs(0))
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1245번(파이썬): 농장 관리 (0) | 2021.08.29 |
---|---|
[baekjoon] 백준 2823번(파이썬): 유턴 싫어 (0) | 2021.08.28 |
[baekjoon] 백준 14496번(파이썬): 그대, 그머가 되어 (0) | 2021.08.26 |
[baekjoon] 백준 11123번(파이썬): 양 한마리... 양 두마리... (0) | 2021.08.25 |
[baekjoon] 백준 2251번(파이썬): 물통 (0) | 2021.08.24 |