| ์๊ฐ ์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ ํ | ์ ๋ต ๋น์จ | 
| 1 ์ด | 256 MB | 37.230% | 
11053๋ฒ: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด
์์ด A๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค์ด, ์์ด A = {10, 20, 10, 30, 20, 50} ์ธ ๊ฒฝ์ฐ์ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ A = {10, 20, 10, 30, 20, 50} ์ด๊ณ , ๊ธธ์ด๋ 4์ด๋ค.
www.acmicpc.net
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 | 
๋๊ธ