Kim Seon Deok
[백준]1158 요세푸스 문제 본문
https://www.acmicpc.net/problem/1158
<문제 요약>
1.N명의 사람이 원을 이루어 앉음
2.양의 정수 k가 주어짐
3.순서대로 k번째 사람을 제거해 N명의 사람이 모두 제거될 때까지 계속한다.
N, k = list(map(int, input().split()))
people = []
ans = [] # 정답을 담을 리스트
for i in range(1,N+1):
people.append(i)
# 제거하려는 인덱스 시작
a = people.pop(k-1)
ans.append(a)
i = (k-1) # 2부터 시작 & len(people) == 6
while len(people) > 0:
b = ((i + (k -1)) % (len(people)))
c = people.pop(b)
ans.append(c)
i = b
print("<%s>" %(", ".join(map(str,ans))))
<접근방법>
(제거인덱스 + (k -1)) % (제거 후 리스트 길이)
맨 마지막 출력 형식이
< 3, 6, 2, 7, 5, 1, 4 >임에 주의!
print("<%s>" %(", ".join(map(str,ans))))를 이용
'python > Algorithm' 카테고리의 다른 글
[백준] 9012 - 괄호 (0) | 2022.01.14 |
---|---|
[백준]1302 베스트셀러 (0) | 2022.01.08 |
[백준] 1343번 폴리오미노 (0) | 2022.01.06 |
[코드업] [기초-리스트] 성실한 개미 (0) | 2022.01.06 |
[백준]11170 0의 개수 (0) | 2022.01.06 |
Comments