๐๏ธ Algorithm/๐ฉ ๋ฐฑ์ค
๐ฉ [๋ฐฑ์ค] [Python] [Gold4] 11054๋ฒ_๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด
Dbswnstjd
2023. 5. 9. 10:38
๋ฌธ์
https://www.acmicpc.net/problem/11054
11054๋ฒ: ๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด
์ฒซ์งธ ์ค์ ์์ด A์ ํฌ๊ธฐ N์ด ์ฃผ์ด์ง๊ณ , ๋์งธ ์ค์๋ ์์ด A๋ฅผ ์ด๋ฃจ๊ณ ์๋ Ai๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000)
www.acmicpc.net
ํ์ด
# ๋ฐฑ์ค 11054๋ฒ ๋ฌธ์ - ๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด
n = int(input())
arr = list(map(int, input().split()))
dp_increase = [1] * (n)
dp_decrease = [1] * (n)
for i in range(1, n):
for j in range(i):
if arr[i] > arr[j] and dp_increase[i] <= dp_increase[j]:
dp_increase[i] = dp_increase[j] + 1
for i in range(n-1, -1, -1):
for j in range(i, n):
if arr[i] > arr[j] and dp_decrease[i] <= dp_decrease[j]:
dp_decrease[i] = dp_decrease[j] + 1
for i in range(n):
dp_increase[i] = dp_increase[i] + dp_decrease[i] - 1
print(max(dp_increase))
LIS ์ ๋น์ทํ ๋ฌธ์ ์ด์ง๋ง ๊ฒฝ์ฐ๋ฅผ ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด๊ณผ ๊ฐ์ํ๋ ๋ถ๋ถ์์ด ๋๊ฐ์ง๋ก ๋๋์ด์ ๊ณ์ฐํด์ผ ํ๋ค.