https://www.acmicpc.net/problem/11053
11053๋ฒ: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด
์์ด A๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค์ด, ์์ด A = {10, 20, 10, 30, 20, 50} ์ธ ๊ฒฝ์ฐ์ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ A = {10, 20, 10, 30, 20, 50} ์ด
www.acmicpc.net
์์ ) n=6, A=[10, 20, 10, 30, 20, 50] -> ๊ธธ์ด 4
์ฒ์์ ๋ฆฌ์คํธ ์ด๊ธฐํ d=[1, 1, 1, 1, 1, 1]
for๋ฌธ์ ๋๋ฉด์ ์ฐจ๋ก๋๋ก ๊ฐ ์ธ๋ฑ์ค๊น์ง์ ์ ๋ ฅ๋ฐ์ ๋ฐฐ์ด ๊ฐ์ ๋น๊ตํด์ ๋ ํฌ๋ฉด ์ต๋๊ฐ +1
1.
10 | 20 | 10 | 30 | 20 | 50 |
1 | 1 | 1 | 1 | 1 | 1 |
2. 10 < 20 ์ด๋ฏ๋ก d[1] = max(d[0]) + 1
10 | 20 | 10 | 30 | 20 | 50 |
1 | 2 | 1 | 1 | 1 | 1 |
3. 10 < 30 ์ด๋ฏ๋ก d[3] = max(d[0], d[1], d[2]) + 1 = d[2] + 1
10 | 20 | 10 | 30 | 20 | 50 |
1 | 2 | 1 | 3 | 1 | 1 |
4. ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ~~ ํ๋ฉด ์ด๋ฐ ๋ฐฐ์ด์ด ์์ฑ๋๋ค
10 | 20 | 10 | 30 | 20 | 50 |
1 | 2 | 1 | 3 | 2 | 4 |
์ต์ข ๊ฐ์ ์ต๋๊ฐ ์ถ๋ ฅํ๊ธฐ!
n = int(input())
a = list(map(int, input().split()))
d = [1] * n
for i in range(1, n):
for j in range(i):
if a[j] < a[i]:
d[i] = max(d[i], d[j] + 1)
print(max(d))
'๐ค > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 12865: ํ๋ฒํ ๋ฐฐ๋ญ (Python) (0) | 2022.04.11 |
---|---|
๋ฐฑ์ค 1912: ์ฐ์ํฉ (Python) (0) | 2022.04.08 |
๋ฐฑ์ค 2156: ํฌ๋์ฃผ ์์ (Python) (0) | 2022.04.07 |
๋ฐฑ์ค 10844: ์ฌ์ด ๊ณ๋จ ์ (Python) (0) | 2022.04.07 |
๋ฐฑ์ค 1463: 1๋ก ๋ง๋ค๊ธฐ (Python) (0) | 2022.04.05 |