๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/DP19

[๋ฐฑ์ค€]14501๋ฒˆ: ํ‡ด์‚ฌ https://www.acmicpc.net/problem/14501 14501๋ฒˆ: ํ‡ด์‚ฌ ์ฒซ์งธ ์ค„์— ๋ฐฑ์ค€์ด๊ฐ€ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ด์ต์„ ์ถœ๋ ฅํ•œ๋‹ค. www.acmicpc.net dp ๋ฌธ์ œ! ํฌ๊ธฐ๊ฐ€ n์ธ dp ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ณ  0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. x์ผ์ฐจ์— ์ƒ๋‹ด์„ ํ–ˆ์„ ๊ฒฝ์šฐ ๊ทธ ๊ธฐ๊ฐ„๋™์•ˆ์˜ ๋ˆ„์ ์ˆ˜์ต์ด ์ปค์งˆ ๊ฒฝ์šฐ์—๋งŒ dpํ…Œ์ด๋ธ” ๊ฐ’์„ ์ฆ๊ฐ€์‹œ์ผœ์ค€๋‹ค. import sys input = sys.stdin.readline n = int(input()) time = [0]*n price = [0]*n for i in range(n): t, p = map(int,input().split()) time[i] = t price[i] = p dp = [0]*(n+1) for i in range(n): j = i + time[i] wh.. 2023. 3. 23.
[๋ฐฑ์ค€]1932๋ฒˆ: ์ •์ˆ˜ ์‚ผ๊ฐํ˜• https://www.acmicpc.net/problem/1932 1932๋ฒˆ: ์ •์ˆ˜ ์‚ผ๊ฐํ˜• ์ฒซ์งธ ์ค„์— ์‚ผ๊ฐํ˜•์˜ ํฌ๊ธฐ n(1 ≤ n ≤ 500)์ด ์ฃผ์–ด์ง€๊ณ , ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ n+1๋ฒˆ์งธ ์ค„๊นŒ์ง€ ์ •์ˆ˜ ์‚ผ๊ฐํ˜•์ด ์ฃผ์–ด์ง„๋‹ค. www.acmicpc.net ๋„ˆ๋ฌด๋„ˆ๋ฌด dp ๋ฌธ์ œ๋‹ค ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฌธ์ œ ์˜ˆ์ œ๋กœ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ด๊ฐ€ ๊ฐ„๋‹ค ๊ฒฝ๋กœํ•ฉ์„ ์ €์žฅํ•  ๋ฐฐ์—ด์„ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ํ•œ ์ธต์”ฉ ์ €์žฅํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. 1์ธต์€ ๋‹น์—ฐํžˆ ๊ทธ๋Œ€๋กœ 7์ผ ๊ฒƒ์ด๊ณ , 2์ธต์€ ๊ฐ๊ฐ 7+3=10, 7+8=15๊ฐ€ ๋œ๋‹ค 3์ธต 0๋ฒˆ์งธ ์นธ: 10์ด ๊ทธ๋Œ€๋กœ ๋‚ด๋ ค์™€์„œ 10+8=18 1๋ฒˆ์งธ ์นธ: (10,15์ค‘ ํฐ ๊ฐ’) + 1 = 15+1 = 16 2๋ฒˆ์งธ ์นธ: 15๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚ด๋ ค์™€์„œ 15+0=15 4์ธต 0๋ฒˆ์งธ ์นธ: 18์ด ๊ทธ๋Œ€๋กœ ๋‚ด๋ ค์™€์„œ 18+2=20 1๋ฒˆ์งธ ์นธ: (18,16.. 2023. 3. 11.
[๋ฐฑ์ค€]2579๋ฒˆ: ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ https://www.acmicpc.net/problem/2579 2579๋ฒˆ: ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ ๊ฒŒ์ž„์€ ๊ณ„๋‹จ ์•„๋ž˜ ์‹œ์ž‘์ ๋ถ€ํ„ฐ ๊ณ„๋‹จ ๊ผญ๋Œ€๊ธฐ์— ์œ„์น˜ํ•œ ๋„์ฐฉ์ ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒŒ์ž„์ด๋‹ค. ๊ณผ ๊ฐ™์ด ๊ฐ๊ฐ์˜ ๊ณ„๋‹จ์—๋Š” ์ผ์ •ํ•œ ์ ์ˆ˜๊ฐ€ ์“ฐ์—ฌ ์žˆ๋Š”๋ฐ ๊ณ„๋‹จ์„ ๋ฐŸ์œผ๋ฉด ๊ทธ ๊ณ„๋‹จ์— ์“ฐ์—ฌ ์žˆ๋Š” ์  www.acmicpc.net step: ๊ณ„๋‹จ๋ณ„๋กœ ์ ์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด dp: ํ•ด๋‹น ๊ณ„๋‹จ์„ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐŸ์„ ๋•Œ๊นŒ์ง€ ๋ˆ„์ ๋œ ์ตœ๊ณ ์ ์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด ๊ณ„๋‹จ ๊ทœ์น™ ๊ณ„๋‹จ์€ ํ•œ ๋ฒˆ์— ํ•œ ์นธ ๋˜๋Š” ๋‘ ์นธ์”ฉ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฐ์†๋œ ์„ธ ๊ฐœ์˜ ๊ณ„๋‹จ์„ ๋ฐŸ์„ ์ˆ˜๋Š” ์—†๋‹ค. ์œ„ ๊ทœ์น™์„ ์ง€ํ‚ค๋ฉด์„œ i๋ฒˆ์งธ ์นธ์„ ๊ผญ ๋ฐŸ์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž. ํ˜„์žฌ ์œ„์น˜ํ•œ ์นธ๊นŒ์ง€ ๋ˆ„์ ๋œ ์ตœ๊ณ ์ ์ˆ˜ dp[i]๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 1. ์ง์ „ ์นธ ๋ฐŸ์ง€ ์•Š๊ธฐ ์ด ๊ฒฝ์šฐ .. 2023. 2. 28.
[๋ฐฑ์ค€]11053๋ฒˆ: ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด / 11722๋ฒˆ: ๊ฐ€์žฅ ๊ธด ๊ฐ์†Œํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด 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.. 2023. 2. 26.
[์ด์ฝ”ํ…Œ] ๊ธˆ๊ด‘ ์ถœ์ฒ˜: ์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค with ํŒŒ์ด์ฌ https://www.youtube.com/watch?v=5Lu34WIx2Us&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=6 ๋ฌธ์ œ n*m ํฌ๊ธฐ์˜ ๊ธˆ๊ด‘์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธˆ๊ด‘์€ 1*1 ํฌ๊ธฐ์˜ ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ฐ ์นธ์€ ํŠน์ •ํ•œ ํฌ๊ธฐ์˜ ๊ธˆ์ด ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฑ„๊ตด์ž๋Š” ์ฒซ ๋ฒˆ์งธ ์—ด๋ถ€ํ„ฐ ์ถœ๋ฐœํ•˜์—ฌ ๊ธˆ์„ ์บ๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋งจ ์ฒ˜์Œ์—๋Š” ์ฒซ ๋ฒˆ์งธ ์—ด์˜ ์–ด๋А ํ–‰์—์„œ๋“  ์ถœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„์— m-1๋ฒˆ์— ๊ฑธ์ณ์„œ ๋งค๋ฒˆ ์˜ค๋ฅธ์ชฝ ์œ„, ์˜ค๋ฅธ์ชฝ, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ 3๊ฐ€์ง€ ์ค‘ ํ•˜๋‚˜์˜ ์œ„์น˜๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ฑ„๊ตด์ž๊ฐ€ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ธˆ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”. ๋ฌธ์ œ ์กฐ๊ฑด ํ’€์ด์‹œ๊ฐ„: 30๋ถ„ ์‹œ๊ฐ„์ œํ•œ: 1์ดˆ ๋ฉ”๋ชจ๋ฆฌ์ œ.. 2023. 2. 26.
[์ด์ฝ”ํ…Œ] ๊ฐœ๋ฏธ ์ „์‚ฌ n = int(input()) arr = list(map(int,input().split())) dp = [0]*n dp[0]=arr[0] dp[1]=max(arr[0],arr[1]) for j in range(2,n): dp[j]=max(dp[j-2]+arr[j],dp[j-1]) print(dp) print(max(dp[n-1],dp[n-2])) 2023. 2. 25.
728x90