โ๋ฌธ์
https://softeer.ai/practice/6293
์ธ์ด๋ณ ์๊ฐ/๋ฉ๋ชจ๋ฆฌ
์ธ์ด | ์๊ฐ | ๋ฉ๋ชจ๋ฆฌ |
JavaScript | 2์ด | 256MB |
C | 1์ด | 256MB |
C++ | 1์ด | 256MB |
Java | 2์ด | 256MB |
Python | 2์ด | 256MB |
์ด ์ง๊ฒ๋ค๋ฆฌ์ ๋์ ๋ค์ฅ๋ ์ฅํ์ฌ ๋์ด๊ฐ ๋ชจ๋ ๋ค๋ฅด๋ค.
์์ชฝ์์ ๋์ชฝ์ผ๋ก ๋์ด๊ฐ ์ ์ ๋์ ๋์ ๋ฐ์ผ๋ฉด์ ๊ฐ์ธ์ ์ง๋๊ฐ๋ ค๊ณ ํ๋ค.
์์ชฝ์์ ๋์ชฝ์ผ๋ก ๊ฐ ๋ ๋ฐ์ ์ ์๋ ๋์ ์ต๋ ๊ฐ์๋?
์ ์ฝ์กฐ๊ฑด
1 ≤ N ≤ 3×10³ ์ธ ์ ์
1 ≤ Ai ≤ 10โธ ์ธ ์ ์
โ๐ปํ์ด
DP๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๋์ 1๋ฒ ๋ฐ์ ์ ์์ผ๋ฏ๋ก 1๋ก ์ด๊ธฐํํ๋ค.
๋์ด๊ฐ ๊ฐ 3, 2, 1, 4, 5 ๋ฅผ ๊ฐ์ง 5๊ฐ์ ๋์ด ์ฃผ์ด์ก์ ๋,
(3, 4, 5), (2, 4, 5), (1, 4, 5)๋ก ๋์ด๊ฐ 5์ธ ๋์ ๋์ฐฉํ์ ๋ ์ต๋ 3๊ฐ์ ๋์ ๋ฐ์ ์ ์๋ค.
์ด์ค๋ฌธ์ ์ฌ์ฉํ์ฌ 0~1, 0~2, 0~3 ์ด๋ฌํ ์์ผ๋ก ํ๋์ฉ ๋๋ ค๊ฐ๋ฉฐ ์ต๋๋ก ๋ฐ์ ์ ์๋ ๋์ ๊ฐ์๋ฅผ ํ์ธํ๋ค.
๐ป์ฝ๋
import sys
input = sys.stdin.readline
n = int(input())
a = list(map(int, input().split()))
dp = [1] * n
for i in range(1, n):
for j in range(i):
if a[i] > a[j]:
dp[i] = max(dp[i], dp[j] + 1)
print(max(dp))
๐ํ๊ธฐ
์ด ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ ์ DP๋ฌธ์ ๋ฅผ ํ์๋๋ ํน์ DP์ธ๊ฐ ์๊ฐํด๋ณด๊ณ ๊ทธ๋ฅ ๋ง ํ์๋ค.
๊ทธ๋ฐ๋ฐ ์ด ๋ ๋ฐ๋ก ์์ ๋์ ๋์ด๊ฐ ํฐ์ง๋ง ํ์ธํ์ฌ ์ฒ์์ (3, 4, 5), (2, 4, 5), (1, 4, 5)๋ก ๊ฑด๋ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐ๋ง ํ๊ณ ์ฝ๋๋ก๋ ๊ตฌํํ์ง ์์์๋ค. ์ด๋ฅผ ๊นจ๋ซ๊ณ ์ด์ค๋ฌธ์ ์ฌ์ฉํ์๋ค.
์ ๋ฐ ๋ฌธ์ ํ ๋ ์ผ์ด์ค๋ฅผ ์ ์๊ฐํด์ ํ์..
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 2565.์ ๊น์ค/Python - Gold5 (0) | 2024.11.05 |
---|---|
[Baekjoon] 13305.์ฃผ์ ์/Python - Silver3 (0) | 2024.11.01 |
[์ํํฐ์ด] ์ฅ์ ๋ฌผ ์ธ์ ํ๋ก๊ทธ๋จ/Python - Lv.2 (0) | 2024.10.29 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ์ฐพ๊ธฐ/Python - Lv.2 (0) | 2024.10.25 |
[ํ๋ก๊ทธ๋๋จธ์ค] [3์ฐจ] ์์ถ/Python - Lv.2 (1) | 2024.10.24 |