[백준/파이썬] 1158번 요세푸스 문제 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 1158번 요세푸스 문제
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
1..N 사람이 원형으로 서 있을 때,
K번째 사람을 반복적으로 제거한 순서를 출력하는 문제입니다.
코드
class Node:
def __init__(self,value, nxt=None):
self.value = value
self.nxt = nxt
n, k = map(int, input().split())
start = node = Node(0)
for i in range(1, n+1):
tmp = Node(i)
node.nxt = node = tmp
node.nxt, node = start.nxt, start
result = []
for _ in range(n):
for __ in range(k):
tmp, node = node, node.nxt
result.append(node.value)
tmp.nxt = node.nxt
print("<"+", ".join(map(str, result))+">")
설명
단일 연결리스트를 원형으로 구성한 뒤,
매번 K칸 이동해 해당 노드를 제거합니다.
제거된 값을 result에 순서대로 저장하고,
문제 형식(<a, b, c>)에 맞춰 출력합니다.
댓글남기기