Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 11055. ๊ฐ€์žฅ ํฐ ์ฆ๊ฐ€ ๋ถ€๋ถ„ ์ˆ˜์—ด

deo2kim 2020. 10. 4. 08:21
๋ฐ˜์‘ํ˜•

๊น€์ˆ˜์—ด ์ค„๋„˜๊ธฐ

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

  • S2 | ๋‹ค์ด๋‚˜๋ฏนํ”„๋กœ๊ทธ๋ž˜๋ฐ

์—ญ์‹œ ์ด๋Ÿฐ ๋ฌธ์ œ๋Š” DP๋ฌธ์ œ์ด๋‹ค.

  1. dp ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค.(1์ฐจ์›, ์ธํ’‹๊ฐ’์œผ๋กœ ๋ฐ›์€ ์ˆ˜์—ด๊ณผ ๋˜‘๊ฐ™์€ ๊ฐ’์œผ๋กœ ๋งŒ๋“ ๋‹ค.)
  2. ์ˆ˜์—ด์—์„œ ์ž์‹ ๋ณด๋‹ค ์•ž ์ชฝ์— ์žˆ๋Š” ๊ฐ’ ์ค‘์—์„œ ์ž์‹ ๋ณด๋‹ค ์ž‘์€ ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ๋Š”๋‹ค.
  3. ํ•ด๋‹น ์ธ๋ฑ์Šค์˜ dp๊ฐ’์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’๊ณผ ์ž์‹ ์˜ ๊ฐ’์„ ๋”ํ•ด dp๋ฅผ ๋‹ค์‹œ ์ฑ„์šด๋‹ค.
  4. 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

 

๋ฐ˜์‘ํ˜•