최대 1 분 소요

사용 언어: Python3

문제

스크린샷 2023-04-26 오후 3 37 00

풀이

내 풀이

from collections import deque
N, K = map(int, input().split())

q = deque([x for x in range(1, N+1)])

while len(q) != 1:
    q.rotate(-(K-1)) # 해당 숫자만큼 회전 (음수: 반시계 방향)
    q.popleft() # K-1번째까지는 rotate 시키고 K번째는 pop

print(q[0])
  • 큐 활용법은 이 글을 참고했다.
    스크린샷 2023-04-26 오후 5 35 33

다른 풀이

from collections import deque
N, K = map(int, input().split())

q = deque(list(range(1, N+1)))

while len(q) != 1:
    for _ in range(K-1):
        q.append(q.popleft())
    q.popleft() # K번째 사람은 pop

print(q[0])
  • rotate()popleft()append()의 조합으로 직접 구현한 풀이이다.


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기