๐Ÿค–/๋ฐฑ์ค€

๋ฐฑ์ค€ 11053: ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด (Python)

sssbin 2022. 4. 7. 17:46

 

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))