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

num = input().strip().split()
from collections import deque
num_list = deque(range(1, int(num[0])+1))
p_list = []
i = 1
while len(num_list) >= int(num[1]):
if i != int(num[1]):
num_list.append(num_list.popleft())
i += 1
else:
p_list.append(num_list.popleft())
i =1
# 최종적으로 남은 리스트 최종 리스트에 추가
p_list += num_list
result = ', '.join(map(str,p_list))
print(f'<{result}>')
결과적으로 보면 분명 테스트 정답과 동일하게 출력이 되지만 제출 결과는 '틀렸습니다'
너무 주먹구구식으로 끼워맞추듯이 코드를 작성한게 문제였던 것 같다.
최종적으로 남은 리스트를 최종 리스트에 추가한다는 등 또 한번의 일을 처리하는 코드가 있어 전체적으로 간결하지 못한 코드가 되었다.
⏳ 시간 - 88ms
💽 메모리 - 34000KB
from collections import deque
n, k = map(int, input().split())
circle = deque(range(1, n+1))
result = []
while circle:
for _ in range(k-1):
circle.append(circle.popleft())
result.append(circle.popleft())
result = ', '.join(map(str, result))
print(f'<{result}>')
입력 데이터를 각 변수로 바로 할당
➡️ 이전 코드에선 입력 받고 나누고 int로 변경하고를 별도로 진행했다면 한번에 처리하는 코드를 통해 변수에 바로 할당
하나의 반복문으로 문제 해결
➡️ 이전 코드는 1차적으로 popleft()를 통해 값을 추출하고, 저장한 뒤 2차적으로 최종 리스트를 합치는 등 2단계로 진행했다면 최종 코드는 반복문 내에서 데이터가 모두 사라질 때까지 순환하며 리스트에 저장하였다.
➡️ 가능하다면 추가 단계 없이 하나의 단계에서 모든걸 처리하는 코드 작성이 중요