HwangHub

[연결리스트 / python] 백준 11866. 요세푸스 문제 0 본문

workspace/알고리즘

[연결리스트 / 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))+">")
Comments