코딩하는 해맑은 거북이

[Python] 요세푸스 문제 - 백준 본문

코딩테스트

[Python] 요세푸스 문제 - 백준

#CJE 2022. 12. 22.
해당 글은 백준 1158번 문제 '요세푸스 문제'를 다룬다.

문제

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

 

1158번: 요세푸스 문제

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)

www.acmicpc.net

 

설명

deque의 rotate 함수를 사용해서 -(k-1)만큼 큐를 돌리고, 가장 첫번째 값만 계속 뽑으면 된다.

그리고 출력을 할 땐, replace 함수를 이용해서 리스트의 [ ] 괄호를 < > 괄호로 변경할 수 있다.

 

코드

from collections import deque

n, k = map(int, input().split())
queue = deque([i for i in range(1, n+1)])

result = []

for i in range(n):
    queue.rotate(-(k-1))
    first_value = queue.popleft()
    result.append(first_value)

print(str(result).replace('[','<').replace(']','>'))

     

 

 

'코딩테스트' 카테고리의 다른 글

[Python] GCD 합 - 백준  (0) 2022.12.23
[Python] 분수 합 - 백준  (0) 2022.12.23
[Python] 계단 오르기 - 백준 (DP)  (0) 2022.12.21
[Python] 사탕 게임 - 백준 (완전탐색)  (0) 2022.12.21
[Python] 30 - 백준  (0) 2022.12.20
Comments