https://www.acmicpc.net/problem/11053
11053๋ฒ: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด
์์ด A๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค์ด, ์์ด A = {10, 20, 10, 30, 20, 50} ์ธ ๊ฒฝ์ฐ์ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ A = {10, 20, 10, 30, 20, 50} ์ด
www.acmicpc.net
https://www.acmicpc.net/problem/11722
11722๋ฒ: ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด
์์ด A๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค์ด, ์์ด A = {10, 30, 10, 20, 20, 10} ์ธ ๊ฒฝ์ฐ์ ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด์ A = {10, 30, 10, 20, 20, 10}
www.acmicpc.net
์ด ๋ฌธ์ ์ ๋ช ํ ๋ฌธ์ ๋ผ๊ณ ํ๋ค
๋ dp์ธ๊ฑฐ ์๊ณ ํ๋ ค๊ณ ํด๋ ์์ด๋์ด๊ฐ ์ ๋ ์ค๋ฅด์ง ์์์ ๋งํ๋ ๋ฌธ์ ...
ํ์ด
- ์์ด A์ ๊ธธ์ด๊ฐ ๋๊ฐ์ ๋ฐฐ์ด dp๋ฅผ ๋ง๋ ๋ค.
- dp์๋ ์์ด์ ํน์ ์์๊ฐ ๋ง์ง๋ง์ด ๋๋ ๊ฒฝ์ฐ ๋ถ๋ถ์์ด์ ๊ธธ์ด๊ฐ ์ ์ฅ๋๋ค.
- ์์ดA๋ฅผ ์ํํ๋ฉด์ ํด๋น ์์๋ณด๋ค ์์ ์์นํ๋ ์์๋ค์ ํ๋์ฉ ์ฒดํฌํ๋ค. (์ด์ค for๋ฌธ ๋๋ ค์ผํจ)
- ์์ ์์ ๊ฐ < ํ์ฌ ์์ ๊ฐ ์ ๋ง์กฑํ๋ฉด(์ค๋ฆ์ฐจ์ ์กฐ๊ฑด),
- ์์ ์์๊ฐ ๋ง์ง๋ง ์์์ธ ๋ถ๋ถ์์ด์ ํ์ฌ ์์๋ฅผ ์ถ๊ฐํ์ ๊ฒฝ์ฐ ๊ธธ์ด๊ฐ ์ต๋๊ฐ ๋๋ค๋ฉด ํ์ฌ dp๊ฐ์ ๊ฐฑ์ ํด์ค๋ค.
- ์ฆ, A[i] > A[j] ๋ฅผ ๋ง์กฑํ๋ฉด์ DP[i] < DP[i]+1 ์ธ ๊ฒฝ์ฐ ๊ฐฑ์ ํด์ฃผ๋ฉด ๋๋ค. (i=ํ์ฌ ์ธ๋ฑ์ค, j=๋น๊ตํ๋ ์์ชฝ ์์ ์ธ๋ฑ์ค)
๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ์์ด ๋ฌธ์ ๊ฐ์ ๊ฒฝ์ฐ๋ ๋๊ฐ์ง๋ก ํ ์ ์๋๋ฐ,
1. ๋ถ๋ฑํธ๋ง ๋ฐ๊ฟ์ค๋ค
2. .reverse() ํจ์๋ฅผ ํตํด ์ฆ๊ฐํ๋ ๋ถ๋ถ์์ด๋ฌธ์ ๋ก ๋ฐ๊พธ์ด ํ์ด์ค๋ค
#๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด ๋ฌธ์
n = int(input())
arr = list(map(int,input().split()))
dp = [1]*n
for i in range(n):
for j in range(0,i):
if arr[i]<arr[j]:
dp[i] = max(dp[i],dp[j]+1)
print(max(dp))
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > DP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]1932๋ฒ: ์ ์ ์ผ๊ฐํ (0) | 2023.03.11 |
---|---|
[๋ฐฑ์ค]2579๋ฒ: ๊ณ๋จ ์ค๋ฅด๊ธฐ (0) | 2023.02.28 |
[์ด์ฝํ ] ๊ธ๊ด (0) | 2023.02.26 |
[์ด์ฝํ ] ๊ฐ๋ฏธ ์ ์ฌ (0) | 2023.02.25 |
[๋ฐฑ์ค]1520๋ฒ: ๋ด๋ฆฌ๋ง ๊ธธ (0) | 2023.02.17 |