https://www.acmicpc.net/problem/14231
코드
#include <iostream>
#include <vector>
using namespace std;
#define FASTIO ios::sync_with_stdio(false);cin.tie(NULL);
int main() {
FASTIO;
int n, ans = 0;
cin >> n;
vector<int> v(n);
vector<int> dp(n, 1);
for (int i = 0; i < n; i++) cin >> v[i];
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
if (v[j] < v[i])
dp[i] = max(dp[i], dp[j] + 1);
}
ans = max(ans, dp[i]);
}
cout << ans;
return 0;
}
설명
현재 위치에서 이전 박스들을 모두 확인해주면서 조건에 맞을 때마다 dp[i]를 업데이트해줍니다.
느낀 점
식 찾기와 구현 모두 어렵지 않았습니다!
'PS (C, C++)' 카테고리의 다른 글
[백준/C++] 2637 장난감 조립 (0) | 2024.09.24 |
---|---|
[백준/C++] 24392 영재와 징검다리 (0) | 2024.09.23 |
[백준/C++] 21555 빛의 돌 옮기기 (0) | 2024.09.19 |
[백준/C++] 21773 가희와 프로세스 1 (0) | 2024.09.18 |
[백준/C++] 1351 무한 수열 (0) | 2024.09.17 |