728x90
๋ฌธ์
ํ์ด
์์ด์ ์ต๋ ํฌ๊ธฐ๊ฐ 1000์ด๋ฏ๋ก N2 ์ผ๋ก ํ๋ฉด ๋๋ค.
dp ๊ฐ์ ๊ฐฑ์ ํ๋ ๋ฐฉ๋ฒ๊ณผ ๋์ผํ๊ฒ dp ์์ด๋ ๊ฐฑ์ ํด์ฃผ๋ฉด ๋๋ค.
(์๋ ์ฝ๋ ์ฐธ๊ณ )
์ฝ๋
import sys
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
dpMax = [0] * n
dpArr = [[] for _ in range(n)]
dpArr[0] = [arr[0]]
maxIdx = 0
for i in range(1, n):
for j in range(i - 1, -1, -1):
if arr[i] > arr[j]:
if dpMax[j] + 1 > dpMax[i]:
dpMax[i] = dpMax[j] + 1
dpArr[i] = dpArr[j][:]
dpArr[i].append(arr[i])
if dpMax[maxIdx] < dpMax[i]:
maxIdx = i
print(dpMax[maxIdx] + 1)
for a in dpArr[maxIdx]:
print(a, end = " ")
๋ง๋ฌด๋ฆฌ
๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๋น์ทํ ์ ํ์ด ๋ง์์ ๋น๊ต์ ์ฝ๊ฒ ํ ์ ์์๋ค.
728x90