파이썬으로 코딩 테스트 문제를 풀다보면 생각보다 시간초과가 자주 발생한다.
해결할 수 있는 몇가지 팁을 작성한다.
1. sys.stdin.readlind()로 입력받기
입력 값을 받아 저장해야하는 경우, input()
으로 구현하는 경우가 많다.
sys 파이썬 표준 라이브러리를 사용하면 훨씬 빠른 시간에 적은 메모리를 사용하여 입력을 받을 수 있다.
import sys
# 방법1
var = sys.stdin.readline()
# 방법2
input = sys.stdin.readlin
var = input()
🗣️ 저는 2번째 방법을 더 자주 사용하는 편입니다.
2. 배열 & 리스트에 원소를 추가할 때 인덱스로 접근하기
배열이나 리스트에 원소를 추가하는 경우, 보통 빈 collection
을 만들고 append
로 추가하는 한다.
만약 입력 받아야할 개수(N)을 알고있다면, N만큼 배열을 초기화 한 후, 인덱스로 접근하여 해당 값을 변경하는 것이 더 효율적이다.
# 📢 2의 배수 10개 저장하기
# 기존 방식
a = []
for i in range(1,11):
a.append(i*7)
# 추천하는 방식
a = [0 for _ in range(1,11)]
for i in range(1,11):
a[i] = i*7
3. 줄바꿈을 출력해야하는 경우 문자열로 바꿔 출력하기
줄바꿈을 위해 print()
를 자주 호출하는 것 보다, ‘\n’을 사용하는 것이 좋다.
즉, 문자열 변수에 답을 저장해 두고, 한번에 출력하는 것이다.
# 📢 [1, 2, 3, 4]를 한 줄에 하나씩 출력하기
# 기존 방식
a = [1, 2, 3, 4]
for i in a:
print(i)
# 추천하는 방식
s = ""
for i in a:
s += str(i) + '\n'
print(s)
4. 재귀 깊이 늘려주기
파이썬은 default 재귀호출 횟수가 1000번으로 제한된다.
하지만, 아래와 같은 방법으로 재귀 깊이를 늘려 줄 수 있다.
import sys
sys.setrecursionlimit(1000000)
5. queue 구현 시, list보다 deque 사용하기
파이썬에서는 list보다 collections.deque
모듈을 사용하는 것이 더 빠르다.
그렇기 때문에 Queue를 사용하여 문제를 해결해야하는 상황이라면, deque를 사용하는 것이 더 효율적이다.
# 기존 방식
q = []
for i in range(N):
q.append(i)
for i in range(N):
print(q[-1])
q.pop(-1)
# 추천하는 방식
from collection import deque
q = deque()
for i in range(N):
q.append(i)
for i in range(N):
q.popleft()
Uploaded by N2T
'Python' 카테고리의 다른 글
[Python] heapq: min heap & max heap (0) | 2023.01.23 |
---|