반응형
알고리즘 분류
- 자료 구조
- 큐
SOLUTION
import sys
from collections import deque
N = int(sys.stdin.readline())
deque = deque([i for i in range(1,N+1)])
while(len(deque) > 1):
deque.popleft() # 카드에서 가장위에 있는 수 버림
deque.rotate(-1) # rotate()함수를 이용해 deque안에 있는 값들을 왼쪽으로 한칸씩 이동 0번째 인덱스에 있는 값은 가장 마지막 인덱스로 이동
print(deque[0])
※ pop(0) vs popleft()
사실 기능적인 측면으로만 봤을 때 둘의 기능은 같다.
그러나 시간복잡도를 비교 해보면 pop(0)의 시간복잡도는 O(N) 이고 popleft()의 시간복잡도는 O(1)이기 때문에, deque의 popleft()를 쓰는게 더 효율적인 코드라고 볼 수 있다.
※ collections.deque
'코딩테스트 대비 > 단계별 코딩 테스트 준비(27일 과정)' 카테고리의 다른 글
[백트래킹/Python] 15649번: N과 M(1) - 효과는 굉장했다! (0) | 2022.02.11 |
---|---|
[큐/Python] 1021번: 회전하는 큐 - 효과는 굉장했다! (0) | 2022.02.11 |
[스택/Python] 4949번: 균형잡힌 세상 - 효과는 굉장했다! (0) | 2022.02.11 |
[스택/Python] 17298번: 오큰수 - 효과는 굉장했다! (0) | 2022.02.11 |
[정렬/Python] 18870번: 좌표 압축 - 효과는 굉장했다! (0) | 2022.02.11 |