Open makie082 opened 1 year ago
정답 버전....
import sys
input = sys.stdin.readline
N,K = map(int, input().split())
ppl = [i for i in range(1,N+1)] # 사람들 수열
answer = []
for a in range(N): # 사람들이 다 없어질 때까지 해야하므로 사람 수만큼 반복하면 됨
for front in range(K-1): # 앞에 있는 거 두 개 지우고 뒤에 붙이기
ppl.append(ppl.pop(0))
answer.append(ppl.pop(0)) #answer에 붙여주기
print("<", end="")
for i in range(len(answer)):
if i == len(answer)-1:
print(answer[i], end='')
else:
print(answer[i], end=", ")
print(">")
deque(양방향 queue) 이용한 정답..
import sys
from collections import deque
input = sys.stdin.readline
N,K = map(int, input().split())
ppl = deque([i for i in range(1,N+1)]) # 사람들 수열을 덱으로
answer = []
for a in range(N): # 사람들이 다 없어질 때까지 해야하므로 사람 수만큼 반복하면 됨
for front in range(K-1): # 앞에 있는 거 두 개 지우고 뒤에 붙이기
ppl.append(ppl.popleft())
answer.append(ppl.popleft())
print("<", end="")
for i in range(len(answer)):
if i == len(answer)-1:
print(answer[i], end='')
else:
print(answer[i], end=", ")
print(">")
틀렸는데 왜 틀렸는지 진심 모르겠엄 ^^;;;; deque 사용하라던디 그거 모르고 걍 리스트로 풀었음
반례) 7 6 넣으면 안됨
원래 수열은 [7,1,2,3,4,7,1,2,3,4] 였는데 6번째 숫자인 7이 없어지면서 [1,2,3,4,1,2,3,4]가 된다. 7 다음의 수는 1이기 때문에 1부터 다시 시작해야하는데 앞에 5개가 삭제되어 뒤에 붙으면 [2,3,4,1,2,3,4,1]이 된다. 동일한 숫자가 있다면 삭제되어서 수열이 달라지는 과정을 생각하지 못함 ㅜ