https://www.acmicpc.net/problem/11866
알고리즘 분류
구현
자료구조
큐
n, k = map(int, input().split())
n_lst = list(range(1, n+1))
ans = []
i = k-1
while n_lst:
ans.append(n_lst.pop(i))
if i == len(n_lst): i = 0
for _ in range(k-1):
i += 1
if i == len(n_lst): i = 0
print('<' + ', '.join(map(str, ans)) + '>')
문제풀이
1부터 n까지 들어있는 리스트가 모두 사라질때까지 반복
index = i 인 수를 pop()하고 정답 리스트에 append()
pop()을 통해 이후 인덱스가 1씩 줄었으므로 이후 k번째 수를 제거하기 위해 i에 k - 1 을 더함
그냥 k - 1을 더하면 리스트에 끝에 도달했을때 처음으로 돌아갈 수 없으므로 1씩 더하면서 끝에 도달하면 i에 0 대입
pop()을 통해 현재의 i가 리스트 인덱스에서 벗어날 수 있으므로 pop()한 직후에도 위 검증 수행
ans를 정답 형식에 맞춰 출력
'Koala - 15기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/Python] 1002번: 터렛 (0) | 2024.08.25 |
---|---|
[백준/Python] 10974번: 모든 순열 (0) | 2024.08.25 |
[백준/Python] 15351번: 인생 점수 (0) | 2024.08.18 |
[백준/Python] 16435번: 스네이크버드 (0) | 2024.08.18 |
[백준/Python] 17249번 : 태보태보 총난타 (0) | 2024.08.18 |