๋ฐ์ํ
https://www.acmicpc.net/problem/11722
๋ฌธ์
์์ด A๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋ฅผ ๋ค์ด, ์์ด A = {10, 30, 10, 20, 20, 10} ์ธ ๊ฒฝ์ฐ์ ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด์ A = {10, 30, 10, 20, 20, 10} ์ด๊ณ , ๊ธธ์ด๋ 3์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ด A์ ํฌ๊ธฐ N (1 ≤ N ≤ 1,000)์ด ์ฃผ์ด์ง๋ค.
๋์งธ ์ค์๋ ์์ด A๋ฅผ ์ด๋ฃจ๊ณ ์๋ Ai๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ Ai ≤ 1,000)
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์์ด A์ ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
// ํ์ด : https://whkakrkr.tistory.com
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int>v(n);
for(int i=0; i<n; i++) {
cin >> v[i];
}
vector<int>dp(n,1); // dp[i] = i๊น์ง ์ต๋๊ธธ์ด
for(int i=1; i<n; i++) {
int tmp = 0;
for(int j=0; j<i; j++) {
if(v[j] > v[i]) {
if(tmp < dp[j]) {
tmp = dp[j];
dp[i] = dp[j]+1;
}
}
}
}
sort(dp.begin(), dp.end());
cout << dp[n-1];
return 0;
}
๋ฐ์ํ
'๐๏ธ ICPC Sinchon > Dynamic Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 2688๋ฒ: ์ค์ด๋ค์ง ์์ (0) | 2024.09.06 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 1904๋ฒ: 01ํ์ผ (0) | 2024.08.25 |
[BOJ][C++] ๋ฐฑ์ค 10164๋ฒ: ๊ฒฉ์์์ ๊ฒฝ๋ก (0) | 2024.08.15 |
[BOJ][C++] ๋ฐฑ์ค 1699๋ฒ: ์ ๊ณฑ์์ ํฉ (0) | 2024.08.14 |
[BOJ][C++] ๋ฐฑ์ค 8394๋ฒ: ์ ์ (0) | 2024.08.14 |