๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

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

by dkswnkk 2021. 10. 31.

https://www.acmicpc.net/problem/11722

 

11722๋ฒˆ: ๊ฐ€์žฅ ๊ธด ๊ฐ์†Œํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด

์ˆ˜์—ด A๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€์žฅ ๊ธด ๊ฐ์†Œํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆ˜์—ด A = {10, 30, 10, 20, 20, 10} ์ธ ๊ฒฝ์šฐ์— ๊ฐ€์žฅ ๊ธด ๊ฐ์†Œํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์€ A = {10, 30, 10, 20, 20, 10} 

www.acmicpc.net

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
/*
์ˆ˜์—ด์„ ์—ญ์ˆœ์œผ๋กœ ์ƒ๊ฐํ•˜์—ฌ ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ๊ตฌํ•˜๊ฒŒ ๋˜๋ฉด ๋œ๋‹ค.
*/
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int N; cin >> N;
    vector<int>arr(N);
    vector<int>dp(1001,1);
    for (int i = 0; i < N; i++) {
        cin >> arr[i];
    }
    reverse(arr.begin(), arr.end());    //์ˆ˜์—ด์„ ์—ญ์ˆœ์œผ๋กœ ๋ฐ”๊พผ๋‹ค.

    for (int i = 1; i < N; i++) {        //๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด์„ ๊ตฌํ•œ๋‹ค.
        for (int k = 0; k < i; k++) {
            if (arr[i] > arr[k]) dp[i] = max(dp[i], dp[k] + 1);
        }
    }
    cout << *max_element(dp.begin(), dp.end());    

}

๋Œ“๊ธ€