코딩놀이: python C C++

프로그래머스, 백준 팁 정리

jiheek 2022. 6. 14. 20:23

새로 생길 때마다 업데이트중

 

1. input 시간초과

a = input()
#-------대신 readline 사용---------
import sys
a = int(sys.stdin.readline())

 

2. sort 시간초과

#내림차순 정렬 (reverse true)
l.sort(reverse=True)
#-----대신 push, pop마다 자동 오름차순 정렬해주는 heapq 사용-----
import heapq
heapq.heappush(l, num)
heapq.heappop(l)
#기존 list를 heapq로 변경
heapq.heapify(l)

 

3. deque 사용: popleft이 list의 pop(0)보다 적은 시간 소모한다.

l = [1,2,3]
l.pop(0) #list.pop(index)
l.pop() #list.pop() == list.pop(-1)
#-------대신 deque 사용------
from collections import deque
q = deque()

q.append(1)
q.append('abc') #다른 type도 append 가능
q.popleft() #pop leftmost element
q.pop() #pop rightmost element

pop return

list, deque 모두 pop 실행 시 제거한 원소를 return한다.

 

4. 이걸 다 계산해서 찾아야하나? 하는 문제는 웬만하면 최소한의 계산으로 간소화시킬 규칙/알고리즘이 있다. (그게 효율성 문제긴 하지만..!)