본문 바로가기

코딩테스트 준비

(48)
DP
백준 9184 재귀함수 + 다이나믹 프로그래밍 + 딕셔너리 - 튜플 키 재귀함수의 속도를 끌어올리기 위해 한번 계산한 값을 저장하는 메모이제이션이 필요하다. 위와 같이 인자가 3개인 재귀함수는 단순히 리스트의 인덱스로 저장할 수 없기에 딕셔너리와 튜플을 이용해 저장할 수 있다. 딕셔너리는 가변적인 리스트는 키 값으로 가질 수 없지만, 불변 값을 가지는 튜플은 키 값으로 사용한다.
collections 라이브러리!!!!! 백준 통계학 문제에서 최빈값을 구할 때 반복문과 count() 내장 함수를 사용하면 시간초과가 발생한다. 이를 해결하기 위해서 collections 라이브러리의 Counter에 포함된 Counter(arr).most_common()를 사용한다. 이는 괄호 안의 리스트의 원소와 빈도를 묶은 튜플을 리스트로 반환해준다. python.flowdas.com/library/collections.html collections --- 컨테이너 데이터형 — 파이썬 설명서 주석판 collections --- 컨테이너 데이터형 소스 코드: Lib/collections/__init__.py 이 모듈은 파이썬의 범용 내장 컨테이너 dict, list, set 및 tuple에 대한 대안을 제공하는 특수 컨테이너 데이터형을 구현..
람다를 통한 다중 튜플 정렬 arr.sort(key=lambda a: (a[1], a[0])) 위와 같은 코드를 통해 튜플의 여러 요소를 다중 정렬할 수 있다. a[1]이 먼저 쓰였기 때문에 a[1]을 가장 우선으로 정렬하게 되고, a[1]이 같을 시 a[0]을 기준으로 정렬한다. -a[1]과 같이 앞에 -를 붙이면 내림차순으로 정렬한다.
계수정렬 메모리가 한정되어 있고 입력 가능한 숫자 범위가 작을 때는 계수 정렬이 효과적이다.
리스트 입력받기 꿀팁 다른 값들과 동시에 리스트를 입력받을 때 사용할 수 있다. 리스트로 입력받을 변수 앞에 *을 붙여주면 알아서 리스트로 입력이 된다.
백준 4948번 베르트랑 공준 - 에라토스테네스의 체
백준 1929번 소수 구하기 값 한개마다 소수인지 아닌지 판별하는 함수를 만들어서 수행 함수 안 만들고 그냥 반복문으로 하니까 시간 더 오래걸림.. 이유는 아직 모르겠음 또한 다음과 같이 해당 값에 루트를 씌운 값까지만 반복문을 돌려도 소수 여부를 판별할 수 있다. 그냥 i까지 반복문 돌리면 시간 초과가 발생한다. for i in range(2, int(num**0.5)+1):