hi jaeneee

baekjoon(18258-큐 2)_python.. 시간 초과 본문

알고리즘/baekjoon

baekjoon(18258-큐 2)_python.. 시간 초과

ash silver 2022. 6. 16. 15:23

1) 문제

2) 예시

3) 제출

from collections import deque
import sys
input = sys.stdin.readline

n = int(input())
li = deque()
result, cnt = "", 0


for i in range(0, n):
    order = input().split()
    if order[0] == "push":
        li.append(order[1])
        cnt += 1

    elif order[0] == "pop":
        if cnt == 0:
            result += "-1"
        else:
            result += str(li.popleft()) 
            cnt -= 1
        result += "\n"

    elif order[0] == "size":
        result += str(cnt)
        result += "\n"
    
    elif order[0] == "empty":
        if cnt == 0:
            result += "1" 
        else : 
            result += "0" 
        result += "\n"
    
    elif order[0] == "front":
        if cnt == 0:
            result += "-1" 

        else :
            result += str(li[0]) 
        result += "\n"
    
    elif order[0] == "back":
        if cnt == 0:
            result += "-1" 
            
        else : 
            result += str(li[cnt - 1]) 
        result += "\n"

result = result.rstrip()
print(result)

4) 메모리/시간/코드길이

5) PLUS

시간초과가 계속 나서 선배한테 도움을 구했다,,

알고리즘은 복잡한 것 없이 자료 구조랑 큐라 함수의 실행속도를 보라고 했다,,

그리고 하나를 고쳤더니 바로 해결되었다. 

https://hyun-am-coding.tistory.com/entry/Python-list-%EC%97%B0%EC%82%B0%EC%97%90-%EB%94%B0%EB%A5%B8-%EC%8B%9C%EA%B0%84-%EB%B3%B5%EC%9E%A1%EB%8F%84

 

Python list 연산에 따른 시간 복잡도

python list 연산에 따른 시간 복잡도 시간 복잡도가 O(1)인 연산 len(a) len(a)는 리스트 전체 요소의 개수를 리턴합니다. 사용 예시는 다음과 같습니다. a = [1,2,3,4,5] print(len(a)) ## 출력값 # 5 a[i] a[i]..

hyun-am-coding.tistory.com

에서 pop(0)이 n만큼 시간이 걸려서 deque을 이용하라고 했다. 

li = []

이렇게 했던 부분을

li = deque()

이렇게 바꾸었더니 시간 초과 없이 바로 성공했다

'알고리즘 > baekjoon' 카테고리의 다른 글

baekjoon(1929-소수 구하기)_python  (0) 2022.09.28
baekjoon(9461-파도반 수열)_python  (0) 2022.08.12
baekjoon(2581-소수)_python  (0) 2022.06.08
baekjoon(4673-셀프 넘버)_python  (0) 2022.06.07
baekjoon(1037-약수)_python  (0) 2022.05.31
Comments