backjoon python 시간초과

2lol_chang·2024년 2월 11일

https://www.acmicpc.net/problem/17608

뒤늦은 코테 준비.. 시작

[요약]

input() 사용으로 시간초과 발생
sys.stdin.readline() 적용 X

[input()이 느린 이유]

1) prompt message 출력
input("값을 입력하세요") - prompt message
input()처럼 안받는 경우도 있지만, 속도 지연

2) 입력 개행문자 삭제

[readline()이 빠른 이유]

문자열로 입력 처리

개행 문자를 그대로 가져옴 

[초기 코드]

피드백

- 로직 구상 후, 코드 작성 (굿)
- 문제에서 제시한 방법 그 자체를 직접 구현하려고 함 (쓸애기)
- 훨씬 간단하게 풀 수 있는 방법 존재 
x = int(input())

stack = []

for i in range(x):
    k = int(input())
    
    if len(stack)==0:
        stack.append(k)
        
    elif stack[-1] > k:
        stack.append(k)
        
    else:
        while True:
            if len(stack)==0:
                stack.append(k)
                break
            if stack[-1] <= k:
                stack.pop()
            else:
                stack.append(k)
                break
print(len(stack))

[개선 코드]

시간 초과 뜨길래..
내 초기 코드가 쓰레기인거 같아서
복잡도를 조금이나마 줄여본다고 만든 코드도 시간초과
x = int(input())

arr = []
for i in range(x):
    arr.append(int(input()))

res = 1
k = arr[-1]
for i in range(len(arr)-2, -1, -1):
    if arr[i] > k:
        k = arr[i]
        res += 1

print(res)

[해결]

이거 없다고 시간초과 발생 
앞으로 필수
( 파이썬이 속도가 이렇게 느리다니..? )
import sys
input = sys.stdin.readline
profile
멀티모달 AI를 배우고 떠나겠습니다.

0개의 댓글