๐Ÿงท ๋ฌธ์ œ

https://www.acmicpc.net/problem/11053

์ˆ˜์—ด A๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

๐Ÿ›  ํ’€์ด

์ด ๋ฌธ์ œ๋Š” DP๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ณดํŽธ์ ์ธ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

Step 1.
 ๋จผ์ € DP table์„ ๊ธธ์ด n์˜ 1์ฐจ์› ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค. ๋ชจ๋“  ๋ถ€๋ถ„์ˆ˜์—ด์€ ์ตœ์†Œํ•œ 1์˜ ๊ธธ์ด๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ๊ฐ’์€ 1๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ค€๋‹ค.
d = [1] * n

Step 2.
 ์ฃผ์–ด์ง„ sequence๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ํ•ด๋‹น ์ธ๋ฑ์Šค i๊นŒ์ง€ ๋” ์ž‘์€ ๊ฐ’์„ ๊ฐ–๋Š” sequence[j] ์ค‘ DP table์˜ ๊ฐ’์ด ๊ฐ€์žฅ ํฐ d[j]์— 1์„ ๋”ํ•ด์ค€๋‹ค.

Step 3.
 ์œ„์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ•ด์ง„ DP table์˜ ๊ฐ’๋“ค ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ–Š ๋‚˜์˜ ์ฝ”๋“œ

import sys

if __name__ == "__main__":
    n = int(input())
    sequence = list(map(int, input().split()))
    d = [1] * n
    for i in range(1, n):
        for j in range(i):
            if sequence[j] < sequence[i]:
                d[i] = max(d[i], d[j] + 1)

    print(max(d))