![article thumbnail image](https://blog.kakaocdn.net/dn/dfTm5G/btrazudWBO2/Vp5bgHgykbSvKk5kZhdxEK/img.png)
728x90
1부터 n까지 순서대로 사람을 앉힌 다음에 index번호가 k-1인 사람을 제거 후 temp += k-1 을 통해 temp를 늘려가며 제거한다.
하지만 그러다 보면 temp가 리스트의 len을 넘어가는 순간이 올 수 밖에 없다. (우리가 쓰는 리스트는 원형이 아니므로)
그럴땐 전체 temp를 리스트의 len으로 나눈 나머지의 값으로 temp을 되돌려 놓는다. 그렇게 하면 원형으로 돌아가며 제거하는 것과 같은 효과를 낸다.
코드
n, k = map(int, input().split())
arr = [i for i in range(1, n + 1)]
answer = []
num = k - 1
for i in range(n):
if len(arr) > num:
answer.append(arr.pop(num))
num += k - 1
elif len(arr) <= num:
num = num % len(arr)
answer.append(arr.pop(num))
num += k -1
print("<", ', '.join(str(i) for i in answer), ">", sep = '')
'Algorithm' 카테고리의 다른 글
백준 알고리즘 파이썬(Python) 2747번 피보나치 수 (0) | 2021.08.03 |
---|---|
백준 알고리즘 파이썬(Python) 2579번 계단오르기 (0) | 2021.07.30 |
백준 알고리즘 파이썬(Python) 11279번 최대 힙 (0) | 2021.07.28 |
백준 알고리즘 파이썬(Python) 9012번 괄호 (0) | 2021.07.22 |
백준 알고리즘 파이썬(Python) 5397번 키로거 (0) | 2021.07.19 |