์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ๊ตฌํ
- BFS
- ๊ทธ๋ฆฌ๋
- ์ฐ์ ์์ํ
- DP
- ์์ํ์
- SQL
- ๋ณํฉ์ ๋ ฌ
- ์๊ณ ๋ฆฌ์ฆ
- ์์๊ตฌํ๊ธฐ
- ๊ทธ๋ํํ์
- ๊ทธ๋ํ
- ๋ฐฑ์ค
- ๊น์ด์ฐ์ ํ์
- ํ์ด์ฌ
- ๋์ ํฉ
- ๋๋น์ฐ์ ํ์
- ์ํ
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- DFS
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋์ ๊ณํ๋ฒ
- ์ค๋ธ์
- db
- ์๋ฃ๊ตฌ์กฐ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- LIS
- ๋จธ์ง์ํธ
- ์ ๋ ฌ
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[๋ฐฑ์ค] 11054๋ฒ: ๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด - C++ ๋ณธ๋ฌธ
[๋ฐฑ์ค] 11054๋ฒ: ๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด - C++
.23 2021. 7. 28. 01:01๋ฌธ์
์์ด S๊ฐ ์ด๋ค ์ Sk๋ฅผ ๊ธฐ์ค์ผ๋ก S1 < S2 < ... Sk-1 < Sk > Sk+1 > ... SN-1 > SN์ ๋ง์กฑํ๋ค๋ฉด, ๊ทธ ์์ด์ ๋ฐ์ดํ ๋ ์์ด์ด๋ผ๊ณ ํ๋ค.
์๋ฅผ ๋ค์ด, {10, 20, 30, 25, 20}๊ณผ {10, 20, 30, 40}, {50, 40, 25, 10} ์ ๋ฐ์ดํ ๋ ์์ด์ด์ง๋ง, {1, 2, 3, 2, 1, 2, 3, 2, 1}๊ณผ {10, 20, 30, 40, 20, 30} ์ ๋ฐ์ดํ ๋ ์์ด์ด ์๋๋ค.
์์ด A๊ฐ ์ฃผ์ด์ก์ ๋, ๊ทธ ์์ด์ ๋ถ๋ถ ์์ด ์ค ๋ฐ์ดํ ๋ ์์ด์ด๋ฉด์ ๊ฐ์ฅ ๊ธด ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ด A์ ํฌ๊ธฐ N์ด ์ฃผ์ด์ง๊ณ , ๋์งธ ์ค์๋ ์์ด A๋ฅผ ์ด๋ฃจ๊ณ ์๋ Ai๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000)
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์์ด A์ ๋ถ๋ถ ์์ด ์ค์์ ๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ์์ด์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ค.
DP๋ฅผ ์ด์ฉํ์ฌ ํ ์ ์๋ ๋ฌธ์ . ์ญ์๋ ์์ ๋ฌธ์ ๋ค์ฒ๋ผ LIS ๋ฌธ์ ์ธ๋ฐ, ์์ ํ์๋ ๋ฌธ์ ๋ค์ ์กฐ๊ธ ์์ฉํ์ฌ ํ์ด์ผํ๋ค.
๋ฐ์ดํ ๋ ์์ด์ ํน์ง์ ๊ณ ๋ คํ์ฌ ๊ธธ์ด๊ฐ N์ธ ์์ด A์ i๋ฒ์งธ ์์ A[i]๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ตฌํด์ผ ๋๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. A[1]๋ถํฐ A[i]๊น์ง์ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ธธ์ด
2. A[N]๋ถํฐ A[i]๊น์ง์ ์ญ์์ผ๋ก ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ธธ์ด(A[i]๋ถํฐ A[N]๊น์ง ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด์ ๊ธธ์ด)
1๋ฒ๊ณผ 2๋ฒ์ ๊ฐ๊ฐ ๊ธฐ๋กํ ๋ฐฐ์ด์ Increase[]์ Decrease[]๋ผ๊ณ ๊ฐ์ ํ ๋, ๋ ๋ฐฐ์ด์ ์์๋ณ ํฉ(Increase[i] + Decrease[i], 1 ≤ i ≤ N)์ ๊ตฌํ์ฌ ํฉ์ด ์ต๋๊ฐ์ด ๋๋ ๊ฒฝ์ฐ๊ฐ ๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด์ ๊ธธ์ด์ด๋ค. ์ด ๋ ์ฃผ์ํด์ผ ํ ์ ์ ๋ ๋ฐฐ์ด์ ํฉ์ผ๋ก ๊ตฌํ ์ต๋๊ฐ์๋ A[i]๊ฐ ์ค๋ณตํด์ ๋ค์ด๊ฐ ๊ฒฝ์ฐ์ด๊ธฐ ๋๋ฌธ์ ์ต๋๊ฐ์ 1์ ๋นผ์ค ๊ฐ์ด ์ต์ข ์ต๋ ๊ธธ์ด๊ฐ ๋๋ค.
๐ Increase() ํจ์์ Decrease() ํจ์์ ๊ธฐ๋ณธ ์๋ ์๋ฆฌ : 11053๋ฒ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด
์ฝ๋
#include <cstdio>
#include <vector>
using namespace std;
vector<int> A;
vector<int> Increase(int n);
vector<int> Decrease(int n);
int sum(vector<int> Inc, vector<int> Dec);
int main(void) {
int n;
scanf("%d", &n);
A.resize(n + 1);
for(int i = 1; i <= n; i++) scanf("%d", &A[i]);
printf("%d\n", sum(Increase(n), Decrease(n)));
return 0;
}
vector<int> Increase(int n) {
vector<int> Inc(n + 1);
for(int i = 1; i <= n; i++) {
Inc[i] = 1;
for(int j = 1; j < i; j++) {
if(A[i] > A[j] && Inc[i] < Inc[j] + 1) {
Inc[i]++;
}
}
}
return Inc;
}
vector<int> Decrease(int n) {
vector<int> Dec(n + 1);
for(int i = n; i > 0; i--) {
Dec[i] = 1;
for(int j = n; j >= i; j--) {
if(A[i] > A[j] && Dec[i] < Dec[j] + 1) {
Dec[i]++;
}
}
}
return Dec;
}
int sum(vector<int> Inc, vector<int> Dec) {
int max = 0;
for(int i = 1; i < Inc.size(); i++) {
max = (Inc[i] + Dec[i] > max ? Inc[i] + Dec[i] : max);
}
return max - 1;
}
'์ฝ๋ฉํ ์คํธ ์ค๋น > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 9461๋ฒ: ํ๋๋ฐ ์์ด - C++ (0) | 2021.08.01 |
---|---|
[๋ฐฑ์ค] 1699๋ฒ: ์ ๊ณฑ์์ ํฉ - C++ (0) | 2021.07.30 |
[๋ฐฑ์ค] 9465๋ฒ: ์คํฐ์ปค - C++ (0) | 2021.07.27 |
[๋ฐฑ์ค] 11722๋ฒ: ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด - C++ (0) | 2021.07.26 |
[๋ฐฑ์ค] 11055๋ฒ: ๊ฐ์ฅ ํฐ ์ฆ๊ฐ ๋ถ๋ถ ์์ด - C++ (0) | 2021.07.25 |