알고리즘

[Python] 백준 1592번: 영식이와 친구

내 코딩 2023. 2. 26. 01:20
반응형

코드

N, M, L = map(int, input().split())

n_list = []
for i in range(N):
    n_list.append(0)
a = 0
count = 0
while True:
    n_list[a % N] += 1
    if n_list[a % N] == M:
        print(count)
        break
    count += 1
    a += L

설명

인원수 N, 공을 M번 받으면 끝나는 횟수 M, 다음 공이 몇 번째 옆으로 전달될 숫자 L 을 입력받는다.

각 인원수가 몇 번의 공을 받았는지 세기위해서 빈 리스트를 만들어서 N번만큼 반복하여 0으로 차있는 N개 요소가 들어있는 리스트를 만든다.

숫서를 돌리기 위해 a를 0으로 만들어놓고 몇 번 돌아갔는지 세기 위하여 count를 0으로 만들어 놓는다.

while문으로 무한 반복을 시킨다.

첫 시작을 받은 친구가 1로 시작하기 때문에 n_list에 0번째에 1을 더해준다.

이 때 몇 번째가 될지는 a에 인원수 만큼 나눈 나머지를 구하면 몇 번째 사람인지 알 수 있다.

만약 n_list에 해당 순서번째 사람이 M번 받으면 count를 출력하고 끝낸다.

 count에 1을 더해서 공이 받아진 숫자를 계산하고 a에 L만큼 더해서 L번째만큼 옆으로 전달될 수 있게 한다.