[python] 백준 2164번 오답노트

김보현·2024년 6월 18일
0

PS

목록 보기
41/62

시간초과..ㅠ.ㅠ

오답

n = [i for i in range(1,int(input())+1)]
while 1:
    i = n[1]
    del n[0:2]
    n.append(i)
    if len(n) == 1:
        print(n[0])
        break

queue & deque

list는 random access에 최적화된 자료구조이다.
따라서 pop,insert는 시간복잡도가 데이터 개수가 늘어나면 느려진다.

그래서 deque 자료구조를 사용하여 풀어야한다.

deque(double-ended queue): 양방향에서 데이터 추가&제거하는 자료구조

from collections import deque

collections 모듈에서 deque를 임포트한다.
deque는 popleft()메서드를 제공한다.

정답

from collections import deque
import sys
input = sys.stdin.readline
n = int(input())
card = deque ([i for i in range(1,n+1)])

while len(card) > 1:
    card.popleft()
    a= card.popleft()
    card.append(a)
print(card[0])
profile
Fall in love with Computer Vision

0개의 댓글

관련 채용 정보