[알고리즘 공부] 백준 17204번 죽음의 게임 (파이썬)

Seung Hyeon ·2023년 5월 8일
0

알고리즘

목록 보기
3/10
post-thumbnail

백준 문제 링크

문제요약

  • 게임에 참여하는 N명의 사람들은 원탁에 둘러앉게 되고, 게임을 시작하는 사람은 0번, 그 오른쪽 사람은 1번, 그 오른쪽은 2번, N-1번의 오른쪽 사람은 다시 0번이 된다.
  • 게임이 시작되고, 모든 사람들은 각각 테이블에 둘러 앉은 사람들 중 한 명을 지목한다. 그리고 나서 0번은 임의의 양의 정수 M을 외친다
  • 그 다음 0번, 1번, 2번 ... 순서대로 자신이 지목한 사람의 번호를 외친다.
  • 계속 반복하다가 M번째로 불린 사람은 벌주를 마시게 된다.
  • 이때, 보성이가 벌주를 마시기 위해 영기가 불러야 하는 가장 작은 양의 정수 M을 구해보자

※ 자기자신 지목 가능
※ 두번 이상 지목당하기 가능

코드

N, K = map(int, input().split())

num_list = [int(input()) for _ in range(N)]

point = 0  # 지목을 하는 사람 (0부터 시작)
M = 0       # 지목 횟수(M번째 지목)

for i in range(N):
    target = num_list[point]    # target: 지목당한 사람
    M += 1                      # 지목했으니까 카운트 1 증가
    if target == K:
        print(M)
        break
    point = target    # 지목당한 사람이 이제는 지목하는 사람이 됨
else:
    print(-1)

※ 코드 길이 줄이고 싶을 시,
target = num_list[point]point = num_list[point] 가능

profile
안되어도 될 때까지

0개의 댓글