Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 11722. ๊ฐ€์žฅ ๊ธด ๊ฐ์†Œํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด

deo2kim 2020. 10. 3. 08:20
๋ฐ˜์‘ํ˜•

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

  • S2 | DP

์ฐธ๊ณ (๋น„์Šทํ•œ ์œ ํ˜•) : deok2kim.tistory.com/173

 

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

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ S2 | ๋‹ค์ด๋‚˜๋ฏนํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ์‹œ ์ด๋Ÿฐ ๋ฌธ์ œ๋Š” DP๋ฌธ์ œ์ด๋‹ค. dp ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค.(1์ฐจ์›, ์ธํ’‹๊ฐ’์œผ๋กœ ๋ฐ›์€ ์ˆ˜์—ด๊ณผ ๋˜‘๊ฐ™์€ ๊ฐ’์œผ๋กœ ๋งŒ๋“ ๋‹ค.) ์ˆ˜์—ด์—์„œ ์ž์‹ ๋ณด๋‹ค ์•ž ์ชฝ์— ์žˆ๋Š” ๊ฐ’ ์ค‘์—์„œ ์ž์‹ 

deok2kim.tistory.com

numbers์—๋Š” ์ˆ˜์—ด์ด ๋“ค์–ด์žˆ๋‹ค.

dp๋ผ๋Š” 1์ฐจ์› ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค. (1์ดˆ ์ดˆ๊ธฐํ™”, ๊ฐ์†Œํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ๊ธธ์ด๊ฐ€ ๋“ค์–ด๊ฐˆ ๊ฒƒ์ด๋‹ค.)

1๋กœ ์ดˆ๊ธฐํ™”ํ•œ ์ด์œ ๋Š” ํ˜ผ์ž๋งŒ ๊ฐ€๋Šฅํ•  ๋•Œ๋Š” ๊ธธ์ด๊ฐ€ 1์ด๋ฏ€๋กœ

 

numbers๋ฅผ ํ•˜๋‚˜์”ฉ ๋Œ๋ฉด์„œ ์ž์‹ ๋ณด๋‹ค ์•ž์ชฝ์˜ ์ˆซ์ž์™€ ๋น„๊ตํ•œ๋‹ค.

์ž์‹ ๋ณด๋‹ค ์•ž์ชฝ์˜ ์ˆซ์ž๊ฐ€ ํด ๊ฒฝ์šฐ - ๋‚˜์™€ ๊ทธ ์ˆซ์ž๋Š” ๊ฐ์†Œํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์•ž์ชฝ์˜ ์ˆซ์ž์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ๊ธธ์ด์— 1์„ ๋”ํ•œ ๊ฐ’์ด ์ž์‹ ์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ๊ธธ์ด์ด๋‹ค.

๊ฐ ์ˆซ์ž์—์„œ ๊ฐ€์žฅ ๊ธด ์ˆซ์ž๋ฅผ dp ์— ์ €์žฅํ•œ๋‹ค.

max๊ฐ’์„ ์ถœ๋ ฅ

 

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

N = int(input())
numbers = list(map(int, input().split()))

dp = [1] * N

for i in range(1, N):
    for j in range(i):
        if numbers[j] > numbers[i]:
            dp[i] = max(dp[i], dp[j] + 1)

print(max(dp))
 

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: BACKJOON ONLINE JUDGE

๋งํฌ: 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

 

๋ฐ˜์‘ํ˜•