[백준/Python] 11866 요세푸스 문제 0

재활용병·2024년 1월 19일
0

코딩 테스트

목록 보기
96/157

[백준/Python] 11866 요세푸스 문제 0


풀이 코드 및 설명

from collections import deque
import sys
input = sys.stdin.readline
N, K = map(int, input().split())
queue = deque(range(1, N+1))

answer = []
while queue:
    for _ in range(K-1):
        queue.append(queue.popleft())
    answer.append(queue.popleft())
print("<" + ", ".join(map(str, answer)) + ">")

위 문제는 큐의 앞에서부터 K번째 사람까지를 큐의 뒤로 이동시키고, K번째 사람을 제거하는 과정을 반복하는 것으로 문제를 해결할 수 있다.

  1. answer = [] 배열을 만들어 제거된 사람들의 순서를 저장
  2. 큐가 비어있지 않다면
  • k-1 번 의 큐의 첫 번째 요소를 큐의 끝으로 이동한다(popleft -> append)
  • k번째 요소를 큐에서 제거하고 popleft, answer 리스트에 추가한다
  1. 결과를 출력한다.
profile
코딩 말고 개발

0개의 댓글

관련 채용 정보