Skills for short coding
Updated:
1. 입력 시간 단축
from sys import stdin
# 기존 코드
N, M, V = map(int, input().split())
# 새로운 코드
N, M, V = map(int, stdin.readline().split())
2. 공백 생성
띄어쓰기가 되지 않은 값을 입력받는 경우 split()가 적용되지 않기 때문에, 이를 구분해서 저장하는 것에 애를 먹는 경우가 있다. 그 때는 다음의 코드를 사용한다.
from sys import stdin
# 기존 코드
# 새로운 코드
stdin.readline().rstrip()
3. Deque 자료구조 사용
파이썬에는 사실상 que 자료구조가 없고 리스트를 que 처럼 사용하는 상태이다. 그 단점은 복수 스레드 사용으로 시간이 오래걸린다는 것! 그러나 collections에서 deque 자료구조는 제공해주기 때문에 이제는 list를 사용하지 말고 deque를 받아 que처럼 사용하자.
from collections import deque
# 기존 코드
que = []
# 새로운 코드
deq = collections.deque()
4. PyPy3
Python이랑 동일한 문법과 Python과 온전히(?) 동일하지만, 내부적으로 다르게 설계되어있어 시간이 빠름! 혹시 시간초과로 인한 문제를 겪고 있다면 한 번 PyPy3 언어로 제출해보자.
5. Dictionary 자료구조 사용
key-value 쌍으로 구현된 dictionary 자료구조를 잘 활용해본다. 백준 17825번 윷놀이 문제의 경우 상당히 도움이 될 것이며, 배열을 사용한 부분은 다 대체 사용이 가능하다. 단, 메모리 초과에 대해 범위 설정이 필수적이다.
#예를 들어서 10개의 지점을 방문했는지 체크하기 위해서 visited 방문정보를 저장하는 경우
# 기존 코드
visited = [0 for _ in range(10)]if visited[x] == 0:
visited[x] = 1
# 새로운 코드
visited = {}if not 0 <= nextX <= 100000:
continueif not nextX in visited:
visited[x] = 1