Algorithm/백준

[백준/Python] 요세푸스 문제 0

poppy 2021. 10. 10. 11:53
반응형

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

 

11866번: 요세푸스 문제 0

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

www.acmicpc.net

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

idx = 0 # 제거해야 할 위치 
delete = [] # 제거할 순서를 담은 리스트

while people:
	idx = (idx + k - 1) % len(people) # 제거할 위치 구하기
	delete.append(people.pop(idx))
print('<' + str(delete)[1: -1] + '>')

1. idx는 리스트에서 제거해야 할 위치를 담고 있는 변수이고, delete는 제거해야 할 사람의 순서를 담은 리스트이다.

2. people에 남아있는 값이 없을 때까지 사람을 제거한다.

    2-1. 제거해야할 위치를 구해서 idx를 갱신한다.

    2-2. people에서 제거한 사람을 delete에 추가한다.

3. 결과를 출력한다.

반응형

'Algorithm > 백준' 카테고리의 다른 글

[백준/Python] 절대값 힙  (0) 2021.10.23
[백준/Python] 카드  (0) 2021.10.13
[백준/Python] 후위 표기식2  (0) 2021.10.07
[백준/Python] 괄호  (0) 2021.10.06
[백준/Python] 듣보잡  (0) 2021.10.06