728x90
파이썬(Python) 시간 초과 해결방법
① input() 대신 sys.stdin.readline() 사용하기
input() 내장함수는 sys.stdin.readline()과 달리 prompt message를 출력하고, 개행 문자를 삭제한 것을 리턴하기에(즉, rstrip()를 적용하여 반환한다는 의미이다.) 더 느릴 수밖에 없다.
##
word = input() # input()함수는 사용자의 입력을 받고, 문자열로 변환 후 추가 strip 과정을 거친 뒤에 반환
pritn(word)
##
import sys
for line in sys.stdin : # 한줄로 입력된 얘들이 하나로 출력됨
print(line)
##
import sys
for each in sys.stdin.readline() : # 한줄로 입력한 얘들이 각각 출력됨
print(each)
② 빈 리스트에 append()하여 리스트를 만들지 말고 원하는 리스트의 항목(n) 만큼 lst = [0]*(n+1)와 같이 초기화시켜 인덱스를 이용해 그 위치에 직접 입력받기
### (1)
n = int(input())
dp = []
for i in range(n) :
dp.append(int(input())
### (2)
n = int(input())
dp = [0]*n
for i in range(n) :
dp[i] = int(input())
## (1)보다는 (2)
③ 만약 재귀를 사용할 경우 재귀 깊이 늘려주기
Python3 기준 최대 재귀 깊이는 1000이라고 한다. 그렇기에 재귀 깊이를 변경하여 'Recursion Error'을 해결가능하다.
import sys
sys.setrecursionlimit(n) # n : 내가 원하는만큼의 재귀깊이
④ 줄바꿈 할때엔 print()가 아니라 '\n', for문 마다 출력하지 말고 문자열 변수에 저장해놓고 한 번에 출력
num_lst = [0,1,2,3,4,5,6,7]
num = ""
for i in num_lst :
num += (str(i) + '\n')
print(num)
⑤ 백준에서 Python3가 아닌 PyPy3로 제출하면 더 빠름.
+) 내가 볼려고 따온 파이썬 함수별 시간복잡도
https://wiki.python.org/moin/TimeComplexity
'CS > 파이썬' 카테고리의 다른 글
파이썬(Python) 딕셔너리(dictionary) 관련 함수,메소드 정리 (0) | 2021.08.09 |
---|---|
파이썬 다중조건으로 정렬하기 (ft.[백준] 10814, 10825 문제) (0) | 2021.07.27 |
파이썬(Python) 리스트 합집합, 교집합, 차집합, 대칭차 (0) | 2021.07.10 |
파이썬(Python) 소수점 자리 제한하는 방법 (4) | 2021.07.10 |
파이썬(Python) 아스키코드 변환 함수 (0) | 2021.07.08 |