백준 큐 1158번

안녕하세요 GDSC ML 멤버 나건주입니다.
파이썬 알고리즘 스터디 5번째 주제 큐의 두번째 문제를 풀어보았습니다.

https://www.acmicpc.net/problem/1158

큐는 선입선출의 개념과 같습니다.
먼저 N개의 숫자가 들어가있는 que 리스트를 만들고 que에서 빠질 숫자들을 저장하는 result 리스트를 만들었습니다.
num을 통해 que의 인덱싱을 조절해줍니다.
하나의 숫자가 que에서 빠지면 뒤에 숫자가 그 빠진 위치에 들어오기 때문에 num은 K-1 만큼 더해줬습니다.
num이 que의 인덱스 범위에 벗어나게 되면 처음으로 돌아가야하고 그 숫자는 num/len(que)의 나머지가 됩니다.
그렇게 반복문으로 나온 순서대로 result에 append 시켜주면 문제는 해결됩니다.
마지막으로 ‘[]’가 아닌 ‘<>’로 묶여있기 때문에 리스트 전체를 문자열로 만들어서 ‘[]’를 ‘<>’로 replace를 통해 바꿔주었습니다.

N,K=map(int,input().split())
result=[]
num=0
que=[]
for i in range(1,N+1):
    que.append(i)

for i in range(N):
    num=num+K-1
    if num >=len(que):
        num=num%len(que)
    result.append(que.pop(num))
result=str(result)
result=result.replace('[','<')
result=result.replace(']','>')
print(result)
7 3
<3, 6, 2, 7, 5, 1, 4>

간단히 큐에 대한 개념을 적용할 수 있는 문제였다고 생각합니다.