[알고리즘] 큐, 덱 - 백준 11866번 요세푸스 문제 0

minidoo·2020년 12월 11일
0

알고리즘

목록 보기
80/85
post-thumbnail

정답 코드

import sys
from collections import deque
input = sys.stdin.readline

N, K = map(int, input().split())
arr = deque()
for i in range(1, N+1):
    arr.append(i)

result = []
while len(arr) > 0:
    for _ in range(K-1):
        arr.append(arr.popleft())
    result.append(arr.popleft())

print("<" + ", ".join(list(map(str, result))) + ">")

풀이과정

N = 7, K = 3
arr = [1, 2, 3, 4, 5, 6, 7]

첫 번째 while문을 반복했을 때, arr = [ 4, 5, 6, 7, 1, 2 ] / result = [ 3 ]
두 번째 while문을 반복했을 때, arr = [ 7, 1, 2, 4, 5 ] / result = [ 3, 6 ]
세 번째 while문을 반복했을 때, arr = [ 4, 5, 7, 1 ] / result = [ 3, 6, 2 ]
...
마지막 while문을 반복했을 때, arr = [] / result = [ 3, 6, 2, 7, 5, 1, 4 ]


점검 코드

* 틀렸습니다

import sys
from collections import deque
input = sys.stdin.readline

N, K = map(int, input().split())
arr = deque()
for i in range(1, N+1):
    arr.append(i)

result = []
while len(arr) > 0:
    for _ in range(K-1):
        arr.append(arr.popleft())
    result.append(arr.popleft())

seq = ''
for i in range(len(result)):
    if i == 0:
        seq += '<' + str(result[i]) + ', '
    elif i == len(result) - 1:
        seq += str(result[i]) + '>'
    else:
        seq += str(result[i]) + ', '

print(seq)

0개의 댓글