반응형
https://www.acmicpc.net/problem/1158
1158번: 요세푸스 문제
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)
www.acmicpc.net
해결 방법 : Queue
- K-1번 만큼 Q.push(Q.pop()) 반복 + 1번 Q.pop()
- 이 과정이 원형 테이블의 K번째 사람을 제거하는 한 번의 사이클이다.
- until Q is empty!
import sys
input = sys.stdin.readline
from collections import deque
def solution(N, K):
answer = []
Q = deque(list(range(1, N+1)))
while Q:
for i in range(K-1):
Q.append(Q.popleft())
answer.append(Q.popleft())
answer = ', '.join([str(i) for i in answer])
return '<' + answer + '>'
if __name__ == '__main__':
N, K = map(int, input().strip().split())
result = solution(N, K)
print(result)반응형
'IT study > 알고리즘 문제 풀이' 카테고리의 다른 글
| 백준 14916 : 거스름돈 (0) | 2021.06.09 |
|---|---|
| 백준 9934 : 완전 이진 트리 (0) | 2021.06.09 |
| 백준 문제 추천 리스트! (0) | 2021.06.08 |
| 백준 5430 : AC (0) | 2021.06.07 |
| 백준 1033 : 칵테일 (0) | 2021.05.29 |