교대최소제곱법
[백준 파이썬 12015번 가장 긴 증가하는 부분 수열 2] DP, Bisect 본문
https://www.acmicpc.net/problem/12015
풀이방법
- DP를 활용한다
- 시간복잡도 O(N^2) : N < 10^4
- 타겟 수열의 원소까지 알 수 있다 -> dp를 구하고 dp의 크기 역순으로 index 접근
- bisect 라이브러리의 bisect_left 함수를 활용
- 시간복잡도 O(N logN) : N < 10^6
타겟 수열의 원소는 알 수 없다
+ 23.10.06
Bisect를 활용해도 타겟 수열의 원소를 알 수 있다
-> bisect_left로 나오는 index는 "해당 숫자보다 작은 숫자의 개수!" 라는 점을 이용한다
idx가 2라는 것은 그 수보다 작은 수가 2개는 앞에 있다라는 것이기 때문에 이를 저장하면 dp와 똑같은 값이 나온다
따라서 무조건 bisect를 활용해서 푸는게 좋다!!
https://www.acmicpc.net/problem/14003
https://my-coding-notes.tistory.com/270
'코딩테스트' 카테고리의 다른 글
[백준 파이썬 2638번 치즈] 구현 최적화 (0) | 2023.10.09 |
---|---|
[백준 파이썬 14502번 연구소] 구현 최적화 (1) | 2023.10.09 |
[백준 파이썬 1005번 ACM Craft] 위상정렬 (0) | 2023.09.26 |
[백준 파이썬 1647번 도시 분할 계획] 튜플과 리스트의 시간 차이 (0) | 2023.09.25 |
[백준 파이썬 1197번 최소 스패닝 트리] 크루스칼 알고리즘, 프림 알고리즘 (0) | 2023.09.24 |