728x90
반응형
3745번: 오름세
문제
https://www.acmicpc.net/problem/3745
3745번: 오름세
입력은 여러개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 주가를 관찰한 날의 수 N (N ≤ 100000)이 주어진다. 둘째 줄에는 관찰한 주가가 첫 날부터 순서대로 주어진다.
www.acmicpc.net
풀이
수열이 주어졌을 때 점차 증가하는 부분 수열을 오름세라 하고 가장 긴 오름세를 찾는 문제다. 즉, 가장 긴 증가하는 부분 수열을 구하는 문제다. 범위가 10^5이므로 시간복잡도가 O(NlogN)인 알고리즘을 사용해 풀어야 한다. O(NlogN)으로 푸는 법은 아래 링크에 설명되어 있다.
[12015번 가장 긴 증가하는 부분 수열 2 문제] | [12015번 가장 긴 증가하는 부분 수열 2 풀이]
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, x;
while (cin >> n) {
cin >> x;
vector<int> v{x};
for (int i = 1; i < n; i++) {
cin >> x;
if (v.back() < x)
v.push_back(x);
else
*lower_bound(v.begin(), v.end(), x) = x;
}
cout << v.size() << '\n';
}
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 5214 환승 (0) | 2023.03.20 |
---|---|
[백준 / BOJ] C++ 1937 욕심쟁이 판다 (2) | 2023.03.19 |
[백준 / BOJ] C++ 1818 책정리 (0) | 2023.03.17 |
[백준 / BOJ] C++ 3066 브리징 시그널 (0) | 2023.03.16 |
[백준 / BOJ] C++ 12014 주식 (0) | 2023.03.15 |