인프런 커뮤니티 질문&답변
이렇게 구현하면 조금 비효율적인가요?
작성
·
154
0
아래와 같이 구현해보았는데 이러면 pop(idx) 부분에서 리스트가 하나씩 밀리는 연산이 있으니까 비효율적인가요? 강의에서 나온 코드도 pop하고 다시 끝에 붙이니까 비슷한거 같기도해서요. 코드평가한번만 부탁드립니다.
n, k = map(int, input().split())
q = list(range(1, n+1))
cnt = 0
idx = 0
while q:
cnt += 1
if cnt == k:
cand = q.pop(idx)
cnt = 0
n -= 1
else:
idx = (idx+1) % n
if not q:
print(cand)
답변 1
1
김태원
지식공유자
리스트는 pop() 하면 밀리는 연산이 있고, deque는 없습니다. 이 문제가 N제한이 300,000만 정도 였다면 큰 속도차이가 납니다.
위에 코드와 제가 deque로 제공한 소스파일과 300000 3 입력을 테스트해 보세요.





