파이썬에 적응하는 중인데, 아직 파이썬의 자료구조 활용에 많이 서툴다. 이 문제에서 List를 사용해 Queue를 구현해 풀었다가 시간초과를 만나버렸다.
초기 코드
n = int(input())
cards = [ i+1 for i in range(n)]
while len(cards)>1:
cards.pop(0)
if len(cards) == 1: break
cards.append(cards.pop(0))
print(cards[0])
정답 코드
from collections import deque
n = int(input())
cards = deque([i+1 for i in range(n)])
while len(cards)>1:
cards.popleft()
if len(cards) == 1: break
cards.append(cards.popleft())
print(cards[0])
List 자료형의 pop(0) 연산의 시간복잡도가 O(N)이라 발생하는 시간초과였다. Python은 각 자료구조를 구현하는 방식이 좀 더 다양한 것 같아, 각각의 시간복잡도를 주의해서 사용해야겠다.
2024.07.20 - [분류 전체보기] - Python으로 Queue 사용하기
'Learning-log > Algorithm 문풀' 카테고리의 다른 글
백준 20183번 골목 대장 호석 - 효율성 2 (Python) .. 우당탕탕 시행착오들.. (0) | 2024.08.18 |
---|---|
백준 17135번 캐슬 디펜스 (Python) (0) | 2024.08.07 |
백준 12904번. A와B (Java) (0) | 2024.04.12 |
백준 1240번. 노드사이의 거리 (Java) (0) | 2024.02.16 |
백준 2579번 계단 오르기(Java) (0) | 2023.10.01 |