Algorithm Problem/Python
[python] ๋ฐฑ์ค - 11055. ๊ฐ์ฅ ํฐ ์ฆ๊ฐ ๋ถ๋ถ ์์ด
deo2kim
2020. 10. 4. 08:21
๋ฐ์ํ
๐ค๋ฌธ์ ํด๊ฒฐ
-
S2 | ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
์ญ์ ์ด๋ฐ ๋ฌธ์ ๋ DP๋ฌธ์ ์ด๋ค.
- dp ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค.(1์ฐจ์, ์ธํ๊ฐ์ผ๋ก ๋ฐ์ ์์ด๊ณผ ๋๊ฐ์ ๊ฐ์ผ๋ก ๋ง๋ ๋ค.)
- ์์ด์์ ์์ ๋ณด๋ค ์ ์ชฝ์ ์๋ ๊ฐ ์ค์์ ์์ ๋ณด๋ค ์์ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๋๋ค.
- ํด๋น ์ธ๋ฑ์ค์ dp๊ฐ์ค ๊ฐ์ฅ ํฐ ๊ฐ๊ณผ ์์ ์ ๊ฐ์ ๋ํด dp๋ฅผ ๋ค์ ์ฑ์ด๋ค.
- dp์์ max๊ฐ์ ์ถ๋ ฅ
๐ป์์ค ์ฝ๋
N = int(input())
numbers = list(map(int, input().split()))
dp = numbers[:]
dp[0] = numbers[0]
# print(f'์ต์ดDP: {dp}')
for i in range(1, N):
for j in range(i):
if numbers[j] < numbers[i]:
dp[i] = max(dp[i], dp[j] + numbers[i])
# print(f'i: {i},j: {j}, DP: {dp}')
# print(dp)
print(max(dp))
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋งํฌ: https://www.acmicpc.net/problem/11055
11055๋ฒ: ๊ฐ์ฅ ํฐ ์ฆ๊ฐ ๋ถ๋ถ ์์ด
์์ด A๊ฐ ์ฃผ์ด์ก์ ๋, ๊ทธ ์์ด์ ์ฆ๊ฐ ๋ถ๋ถ ์์ด ์ค์์ ํฉ์ด ๊ฐ์ฅ ํฐ ๊ฒ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค์ด, ์์ด A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} ์ธ ๊ฒฝ์ฐ์ ํฉ์ด ๊ฐ์ฅ ํฐ ์ฆ๊ฐ ๋ถ๋ถ ์๏ฟฝ
www.acmicpc.net
๋ฐ์ํ