#문제
https://www.acmicpc.net/problem/12015
#작성 코드
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 31 32 33 34 35 36 | #include <iostream> #include <vector> #include <algorithm> using namespace std; int n; int serial[1000001]; vector<int> asc; int main(){ cin>>n; for(int i=1; i<=n; i++){ cin>>serial[i]; } for(int i=1; i<=n; i++){ if( asc.empty() ){ asc.push_back(serial[i]); continue; } else{ if( asc.back() < serial[i] ){ asc.push_back(serial[i]); continue; } else{ vector<int>::iterator iter = lower_bound(asc.begin(), asc.end(), serial[i]); *iter = serial[i]; // asc에서 serial[i]보다 최초로 큰 원소를 찾고, serial[i]로 대체한다. continue; } } } cout<<asc.size()<<'\n'; return 0; } | cs |
##
이분탐색으로 어떻게 푸는 것이 좋을지 전혀 떠오르지 않아서
https://ferrante.tistory.com/54, https://mygumi.tistory.com/303?category=677288 참고하여 이분탐색으로 푸는 방법을 공부했다.
lower_bound 함수와 upper_bound 함수는 <algorithm> 헤더파일에 포함되어 있는 함수.
https://okayoki2484.tistory.com/135
'BOJ' 카테고리의 다른 글
BOJ 7579번 :: 앱 (0) | 2020.01.23 |
---|---|
BOJ 1520번 :: 내리막 길 (0) | 2020.01.09 |
BOJ 11055번 :: 가장 큰 증가 부분 수열 (0) | 2020.01.06 |
BOJ 11049번 :: 행렬 곱셈 순서 (0) | 2020.01.06 |
BOJ 2193번 :: 이친수 (0) | 2020.01.05 |