๐Ÿ•๏ธ ICPC Sinchon/Dynamic Programming

[BOJ][C++] ๋ฐฑ์ค€ 11722๋ฒˆ: ๊ฐ€์žฅ ๊ธด ๊ฐ์†Œํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด

์„ ๋‹ฌ 2024. 8. 19. 05:46
๋ฐ˜์‘ํ˜•

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;
}

 

๋ฐ˜์‘ํ˜•