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

[๋ฐฑ์ค€,c++] 12015๋ฒˆ - ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด2

by dkswnkk 2021. 11. 2.
 

12015๋ฒˆ: ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด 2

์ฒซ์งธ ์ค„์— ์ˆ˜์—ด A์˜ ํฌ๊ธฐ N (1 ≤ N ≤ 1,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์ˆ˜์—ด A๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋Š” Ai๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ Ai ≤ 1,000,000)

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>dp;
    dp.push_back(0);
    for (int i = 0; i < n; i++) {
        int number; cin >> number;
        if (dp.back() < number) dp.push_back(number);    //๋ฒกํ„ฐ ๋งˆ์ง€๋ง‰ ๊ฐ’๋ณด๋‹ค ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์ด ๋” ํฌ๋ฉด ์‚ฝ์ž…ํ•œ๋‹ค.
        else {                                            //๋ฒกํ„ฐ ์ด์ „์˜ ๊ฐ’๋ณด๋‹ค ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์ด ๋” ์ž‘์œผ๋ฉด
            auto it = lower_bound(dp.begin(), dp.end(), number);//์ด๋ถ„ ํƒ์ƒ‰์„ ํ†ตํ•ด ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’(number) ๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ํฐ ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ›๊ณ 
            *it = number;                                        //๊ทธ ์ธ๋ฑ์Šค์— ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์œผ๋กœ ๊ฐฑ์‹ ํ•ด์ค€๋‹ค.        
        }
    }
    cout << dp.size() - 1;
}

๋Œ“๊ธ€