์๊ฐ ์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ ํ | ์ ๋ต ๋น์จ |
1 ์ด | 256 MB | 37.230% |
dp[i] ๋ 0~i ๋ฒ ์งธ๊น์ง ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ์์ด์ ๊ธธ์ด์ด๋ค.
- 0 ๋ถํฐ n๊น์ง ์ํํ๋ i-๋ฐ๋ณต๋ฌธ๊ณผ, ๊ทธ ์์ 0 ๋ถํฐ i ๋ฒ์งธ๊น์ง ์ํํ๋ j-๋ฐ๋ณต๋ฌธ ์ผ๋ก ์ด์คfor๋ฌธ์ ๋ง๋ค์๋ค.
- arr[j] < arr[i] ๋ฅผ ๋ง์กฑํ๋ ๊ฒ๋ค ์ค์์ dp[j] ๊ฐ ๊ฐ์ฅ ํฐ ๊ฒ์ ๊ธฐ์ตํด๋๋ค๊ฐ
- dp[i] ๋ฅผ max(0~i๋ฒ์งธ ์ค ๊ฐ์ฅ ํฐ dp[j]) + 1 ๋ก ๊ฐฑ์ ํ์๋ค.
๋ฉ๋ชจ๋ฆฌ | ์๊ฐ |
1120 KB | ms |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include<cstdio>
using namespace std;
int n, arr[1005], dp[1005], ans;
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
for (int i = 0; i < n; i++) {
int max = 0;
for (int j = 0; j < i; j++) {
if (arr[j] < arr[i]) {
if (max < dp[j])
max = dp[j];
}
}
dp[i] = max + 1;
ans = dp[i] > ans ? dp[i] : ans;
}
printf("%d", ans);
return 0;
}
|
cs |
'๐ฅ PS(Problem Solving) ๐ฅ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] #11052 ์นด๋ ๊ตฌ๋งคํ๊ธฐ (0) | 2020.01.10 |
---|---|
[BOJ] #11722 ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ์์ด (0) | 2019.12.16 |
[BOJ] #9205 ๋งฅ์ฃผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ (0) | 2019.10.15 |
[BOJ] #1012 ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2019.10.14 |
[BOJ] #10026 ์ ๋ก์์ฝ (0) | 2019.10.13 |
๋๊ธ