https://www.acmicpc.net/problem/2491
๋ฌธ์
0์์๋ถํฐ 9๊น์ง์ ์ซ์๋ก ์ด๋ฃจ์ด์ง N๊ฐ์ ์ซ์๊ฐ ๋์ด๋ ์์ด์ด ์๋ค. ๊ทธ ์์ด ์์์ ์ฐ์ํด์ ์ปค์ง๊ฑฐ๋(๊ฐ์ ๊ฒ ํฌํจ), ํน์ ์ฐ์ํด์ ์์์ง๋(๊ฐ์ ๊ฒ ํฌํจ) ์์ด ์ค ๊ฐ์ฅ ๊ธธ์ด๊ฐ ๊ธด ๊ฒ์ ์ฐพ์๋ด์ด ๊ทธ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
์๋ฅผ ๋ค์ด ์์ด 1, 2, 2, 4, 4, 5, 7, 7, 2 ์ ๊ฒฝ์ฐ์๋ 1 ≤ 2 ≤ 2 ≤ 4 ≤ 4 ≤ 5 ≤ 7 ≤ 7 ์ด ๊ฐ์ฅ ๊ธด ๊ตฌ๊ฐ์ด ๋๋ฏ๋ก ๊ทธ ๊ธธ์ด 8์ ์ถ๋ ฅํ๋ค. ์์ด 4, 1, 3, 3, 2, 2, 9, 2, 3 ์ ๊ฒฝ์ฐ์๋ 3 ≥ 3 ≥ 2 ≥ 2 ๊ฐ ๊ฐ์ฅ ๊ธด ๊ตฌ๊ฐ์ด ๋๋ฏ๋ก ๊ทธ ๊ธธ์ด 4๋ฅผ ์ถ๋ ฅํ๋ค. ๋ 1, 5, 3, 6, 4, 7, 1, 3, 2, 9, 5 ์ ๊ฒฝ์ฐ์๋ ์ฐ์ํด์ ์ปค์ง๊ฑฐ๋ ์์์ง๋ ์์ด์ ๊ธธ์ด๊ฐ 3 ์ด์์ธ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฏ๋ก 2๋ฅผ ์ถ๋ ฅํ์ฌ์ผ ํ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ์์ด์ ๊ธธ์ด N์ด ์ฃผ์ด์ง๊ณ , ๋์งธ ์ค์๋ N๊ฐ์ ์ซ์๊ฐ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. N์ 1 ์ด์ 100,000 ์ดํ์ ์ ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ฐ์ฅ ๊ธด ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
๋์ ๊ณํ๋ฒ์ ์ด์ฉํ๋ค.
dp1[i] : i๋ฒ์งธ ์ซ์๊น์ง ์ฐ์์ ์ผ๋ก ๊ฐ๊ฑฐ๋ ์ฆ๊ฐํ๋ ๊ฐฏ์
dp2[i] : i๋ฒ์งธ ์ซ์๊น์ง ์ฐ์์ ์ผ๋ก ๊ฐ๊ฑฐ๋ ๊ฐ์ํ๋ ๊ฐฏ์
#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> dp1(n);
vector<int> dp2(n);
dp1[0] = dp2[0] = 1;
for(int i=1; i<n; i++) {
if(v[i-1] <= v[i]) dp1[i] = dp1[i-1]+1;
else dp1[i] = 1;
if(v[i-1] >= v[i]) dp2[i] = dp2[i-1]+1;
else dp2[i] = 1;
}
// ์ถ๋ ฅ
cout << max(*max_element(dp1.begin(), dp1.end()), *max_element(dp2.begin(), dp2.end()));
return 0;
}
'๐๏ธ ICPC Sinchon > Dynamic Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 10844๋ฒ: ์ฌ์ด ๊ณ๋จ ์ (0) | 2023.11.08 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 1912๋ฒ: ์ฐ์ํฉ (0) | 2023.11.03 |
[BOJ][C++] ๋ฐฑ์ค 9625๋ฒ: BABBA (0) | 2023.04.13 |
[BOJ][C++] ๋ฐฑ์ค 1463๋ฒ: 1๋ก ๋ง๋ค๊ธฐ (0) | 2023.01.30 |
[BOJ][C++] ๋ฐฑ์ค 1149๋ฒ: RGB๊ฑฐ๋ฆฌ (0) | 2023.01.30 |