CS/Data Structure & Algorithm
공주 구하기 (덱, 큐 )
Coding Kitsune
2022. 6. 13. 15:28
큐 관련해서 쉬운 문제인데, 분명 유명한 테이블 문제인데 이름이 생각이 안난다...
무슨... 용어가 있는데 이름이 생각이 안나서 너무 괴로운 문제였다.
여튼 문제 풀이는 간단하다. 명수만큼 덱에 넣어준 뒤, while 문을 덱 안에 마지막 한
사람만이 남을 때 까지 돌려준다. 그리고 경우를 cnt로 추적하며, 이 cnt가
K의 배수가 될 때는 이를 리스트에서 삭제시키고, (popleft())
그 외 나머지 경우네는 popleft()를 해서 그대로 다시 오른쪽에 append 시키고,
이 반복문을 계속하다보면 최후의 왕자가 남게된다.
import sys
from collections import deque
#sys.stdin=open("input.txt", 'rt')
N, K = map(int, input().split())
prince = []
prince= deque(prince)
for i in range(1, N+1):
prince.append(i)
cnt = 0
while len(prince) > 1:
cnt += 1
if cnt % K == 0:
prince.popleft()
else:
prince.append(prince.popleft())
print(prince[0])