๐งท ๋ฌธ์
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))