티스토리 뷰
예전에 풀었던 문제인데 O(n2)방식이 아닌 O(NLOGN)방식으로 다시 풀어봤다.
벡터에는 최장 길이 부분 수열이 만들어 진다.
값이 들어있는 배열을 처음부터 끝까지 반복해 가면서 현재 인덱스의 원소가 벡터안에 어느 위치에 들어가야 하는지를 찾아서 그곳에 값을 넣어주는 방식이다.
자세한 내용은 아래 링크에 있으니 먼저 문서를 보고 나서 코드를 보면 이해가 갈것이다.
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 37 38 | #include <iostream> #include <vector> using namespace std; vector<int> vt; vector<int>::iterator it; int arr[1000]; vector<int>::iterator find(int x){ for(it=vt.begin(); it<vt.end(); it++){ if(x <= *it) break; } return it; } int main(int argc, const char * argv[]) { int n; cin>>n; for(int i=0; i<n; i++) cin>>arr[i]; vt.push_back(arr[0]); for(int i=1; i<n; i++) { if(arr[i] > vt.back()) vt.push_back(arr[i]); else{ *find(arr[i]) = arr[i]; } } cout<<vt.size()<<endl; return 0; } | cs |
'알고리즘' 카테고리의 다른 글
[삼성SW역량테스트/DFS] 14502 연구소 (3) | 2018.01.06 |
---|---|
[DP/LCS] 9251번 LCS(Longest Common Subsequence) (0) | 2017.12.28 |
플로이드 알고리즘(All pair shortest path) 자바로 구현 (0) | 2017.11.28 |
[DFS/그래프/하] 4963번 섬의 개수 (0) | 2017.10.10 |
[카카오/신입공채] 다트게임 (난이도 하 정답률 73퍼) (1) | 2017.10.09 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- react hooks
- webpack
- computed
- react
- promise
- reflow
- javascript
- server side rendering
- Action
- useRef
- await
- async
- Next.js
- design system
- es6
- reactdom
- rendering scope
- type alias
- Babel
- atomic design
- storybook
- useEffect
- Polyfill
- mobx
- hydrate
- state
- return type
- typescript
- props
- reducer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함