workspace/algorithm
[연결리스트 / python] 백준 11866. 요세푸스 문제 0
HwangJerry
2023. 4. 6. 10:18
문제 해석
처음에는 큐 문제일 거라고 생각했고, 사실 맞추고 보니까 큐 문제라고는 하는데, 나는 그냥 연결 리스트 개념으로 풀었다. 다만, 파이썬에서는 연결 리스트 pop() 을 기존에 C++로 구현한 것 처럼 참조변수가 갖는 주소값을 temp 등의 변수에 저장해놓고 중간 노드를 떼어내고 하는 작업이 없기 때문에 연결 리스트라고 인지되지 않을 수 있을 것 같다. 중간 지점을 뽑아낸다는 개념으로 연결 리스트라고 정의하고 시작하겠다. (== 파이썬 리스트와 .pop() 메소드를 활용했다.)
풀이
"""
<pseudo code>
n, k 입력이 주어지면
기본적으로 li = [i for i in range(1,n+1)] 인 리스트가 있고,
이 리스트가 원으로 이루어져 있는 방식
루프를 걸고
idx += k
idx = (idx % n)
ans.append(li.pop(idx))
print("<"+', '.join(map(str, ans))+">")
"""
import sys
input = sys.stdin.readline
n, k = map(int ,input().split())
li = [i for i in range(1,n+1)]
idx = 0
ans = list()
while li:
n = len(li)
idx = (idx + k - 1) % n
ans.append(li.pop(idx))
print("<"+', '.join(map(str, ans))+">")