Study/알고리즘

[백준] 1592번_영식이와친구들

혤리 2020. 2. 4. 21:53

문제 링크 : https://www.acmicpc.net/problem/1592

 

1592번: 영식이와 친구들

일단 1번이 공을 잡는다. 1번은 공을 한 번 잡았기 때문에, 공을 3번에게 던진다. 3번은 공을 한 번 잡았기 때문에, 공을 5번에게 던진다. 5번은 2번에게 던지고, 2번은 4번에게 던진다. 4번은 1번에게 던진다. 1번은 이제 공을 두 번 잡았기 때문에, 공을 4번에게 던진다. 4번은 2번에게 던지고, 2번은 5번에게 던지고, 5번은 3번에게 던지고, 마지막으로 3번은 1번에게 던진다. 1번은 이제 공을 세 번 잡았기 때문에, 게임은 끝난다.

www.acmicpc.net

n,m,l = map(int,input().split())

people = {}
for i in range(1,n+1):
    people[i] = 0

cnt = 0
p = people[1] = 1
while people[p]!=m:
    # 홀수
    if people[p]%2!=0:
        p = n if (p+l)%n == 0 else (p+l)%n
    # 짝수
    else:
        p = (p-l)
        if p<=0:
            p += n

    people[p] += 1
    cnt+=1
print(cnt)

처음에 딕셔너리를 이용해 풀었는데 리스트로 푼게 더 깔끔한 것 같다.

n,m,l = map(int,input().split())
people = [0 for _ in range(n)]

cnt = 0
p = 0
while True:
    people[p] += 1
    if people[p] == m:
        print(cnt)
        break
    elif people[p]%2!=0:
        p = (p+l)%n
    else:
        p = (p+n-l) % n
    cnt += 1