Notice
Recent Posts
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
관리 메뉴

교대최소제곱법

[백준 파이썬 12015번 가장 긴 증가하는 부분 수열 2] DP, Bisect 본문

코딩테스트

[백준 파이썬 12015번 가장 긴 증가하는 부분 수열 2] DP, Bisect

옐라크레 2023. 10. 5. 00:31

https://www.acmicpc.net/problem/12015

 

12015번: 가장 긴 증가하는 부분 수열 2

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000)

www.acmicpc.net

풀이방법

  1. DP를 활용한다
    1. 시간복잡도 O(N^2) : N < 10^4
    2. 타겟 수열의 원소까지 알 수 있다 -> dp를 구하고 dp의 크기 역순으로 index 접근
  2. bisect 라이브러리의 bisect_left 함수를 활용
    1. 시간복잡도 O(N logN) : N < 10^6
    2. 타겟 수열의 원소는 알 수 없다

 

 

가장 긴 증가하는 부분 수열(LIS) 완전 정복 - 백준 파이썬

최근 들어, 알고리즘에 재미를 붙였다. 백준 문제를 풀면 문제 난이도마다 티어가 올라가는 재밌는 사이트(solved.ac)가 생겨서 뭔가 동기 부여되는 것 같다. 언어는 python을 사용하고 있다. (취준

seohyun0120.tistory.com

 

+ 23.10.06

Bisect를 활용해도 타겟 수열의 원소를 알 수 있다

-> bisect_left로 나오는 index는 "해당 숫자보다 작은 숫자의 개수!" 라는 점을 이용한다

idx가 2라는 것은 그 수보다 작은 수가 2개는 앞에 있다라는 것이기 때문에 이를 저장하면 dp와 똑같은 값이 나온다

 

따라서 무조건 bisect를 활용해서 푸는게 좋다!!

 

https://www.acmicpc.net/problem/14003

 

14003번: 가장 긴 증가하는 부분 수열 5

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000)

www.acmicpc.net

https://my-coding-notes.tistory.com/270

 

[🏅5 / 백준 14003 / 파이썬] 가장 긴 증가하는 부분 수열 5

14003번: 가장 긴 증가하는 부분 수열 5 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000) www.acmicpc.net 문제

my-coding-notes.tistory.com