[백준/파이썬] 1592번 영식이와 친구들 풀이

업데이트:



문제 정보


풀이

문제

공을 받은 횟수의 홀짝에 따라 왼쪽/오른쪽으로 L칸씩 공을 넘기며, 어떤 사람이 M번 받을 때까지 던진 횟수를 구하는 문제입니다.

코드

n, m, l = map(int, input().split())
people = [0] * n
i = 0
people[i] += 1

while max(people) < m:
    if people[i] % 2 > 0: i = (i + l) % n
    else:
        pm = 1
        if i - l < 0: pm = -1
        i = abs(i - l) % n * pm
    people[i] += 1
    
print(sum(people) - 1)

설명

배열 people로 각 사람의 받은 횟수를 관리하고, 현재 위치 i에서 홀수면 시계방향, 짝수면 반시계방향으로 이동합니다.

누군가 M번 받는 순간까지 누적 전달 횟수(총 받은 횟수 - 1)를 출력합니다.



댓글남기기