N = int(input())
stk = []
for i in range(N):
stk.append(N-i)
while stk:
if len(stk) > 1:
stk.pop()
stk.insert(0, stk.pop())
else:
print(stk.pop())
이렇게 풀었는데 시간 초과였다.
스택이라고 생각하고 만들었지만 실상은 배열이기 때문에 시간복잡도가 N^2이 넘는다.
2초 안에 절대 안풀림.
deque 모듈을 써보자.
from collections import deque
N = int(input())
dq = deque(range(1, N+1))
while len(dq) > 1 :
dq.popleft()
dq.append(dq.popleft())
print(dq.pop())
이렇게 하면 224ms 걸린다. 통과.
'알고리즘 문제풀이 > Python3' 카테고리의 다른 글
[파이썬, Python3] 백준 1302번 베스트셀러 (0) | 2022.03.22 |
---|---|
[Python3, 파이썬] 백준 11286번 절댓값 힙 (0) | 2022.03.22 |
백준 9012 (0) | 2022.03.21 |
비선형 자료구조 - 우선순위 큐, 딕셔너리, 집합 (0) | 2022.03.21 |
선형 자료구조 - 배열, 연결 리스트, 스택, 큐 (0) | 2022.03.21 |