반응형
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
알고리즘 분류
- 자료 구조
- 큐
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
collections — Container datatypes — Python 3.10.0 documentation
collections — Container datatypes Source code: Lib/collections/__init__.py This module implements specialized container datatypes providing alternatives to Python’s general purpose built-in containers, dict, list, set, and tuple. namedtuple() factory f
docs.python.org
'코딩테스트 대비 > 단계별 코딩 테스트 준비(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 |