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

๐Ÿ’ปAlgorithm/PS

[BOJ/๋ฐฑ์ค€] 13302 ๋ฆฌ์กฐํŠธ - ํŒŒ์ด์ฌ

๋ฌธ์ œ

https://www.acmicpc.net/problem/13302

 

13302๋ฒˆ: ๋ฆฌ์กฐํŠธ

์ˆ˜์˜์ด๋Š” ์—ฌ๋ฆ„๋ฐฉํ•™์„ ๋งž์ดํ•˜์—ฌ ๋งŽ์€ ๋†€์ด ์‹œ์„ค์ด ์žˆ๋Š” KOI ๋ฆฌ์กฐํŠธ์— ๋†€๋Ÿฌ๊ฐ€๋ ค๊ณ  ํ•œ๋‹ค. ๋ฆฌ์กฐํŠธ์˜ ํ•˜๋ฃจ ์ด์šฉ๊ถŒ์˜ ๊ฐ€๊ฒฉ์€ ๋งŒ์›์ด๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ์กฐํŠธ์˜ ๊ทœ๋ชจ๋Š” ์ƒ์ƒ์„ ์ดˆ์›”ํ•˜์—ฌ ๋ชจ๋“  ์‹œ์„ค์„ ์ถฉ๋ถ„ํžˆ

www.acmicpc.net

 

 

๋ฌธ์ œํ’€์ด

1์ผ๊ถŒ, 3์ผ๊ถŒ, 5์ผ๊ถŒ๊ณผ ๊ทธ์— ๋”ฐ๋ฅธ ์ฟ ํฐ์„ ์‚ฌ์šฉํ•ด์„œ ๋ฆฌ์กฐํŠธ ์ด์šฉ์„ ์œ„ํ•œ ์ตœ์†Œ ๋น„์šฉ์„ ๊ตฌํ•˜๋Š” dp ๋ฌธ์ œ์ด๋‹ค.

bottom-up ๋ฐฉ์‹์œผ๋กœ ๊ฐ๊ฐ ๋‚ ์— ๋Œ€ํ•ด dp ๊ฐ’์„ ๊ฐฑ์‹ ํ•ด์ฃผ์—ˆ๋‹ค.

dp[day][coupon]์œผ๋กœ 2์ฐจ์› dp ๋ฐฐ์—ด์„ ์„ ์–ธํ•ด์„œ ์ด์šฉ๊ถŒ์— ๋”ฐ๋ผ ์ฟ ํฐ ๊ฐ’๋„ ๊ฐฑ์‹ ํ•ด์ฃผ์—ˆ๋‹ค.

   
1์ผ๊ถŒ ๊ตฌ๋งค dp[i+1][j]=min(result+10000 , dp[i+1][j])
3์ผ๊ถŒ ๊ตฌ๋งค dp[i+k][j+1]=min(result+25000 , dp[i+k][j+1]) ##k=1,2,3
5์ผ๊ถŒ ๊ตฌ๋งค dp[i+k][j+2]=min(result + 37000 , dp[i+k][j+2])  ##k=1,2,3,4,5
์ฟ ํฐ 3์žฅ ์ด์ƒ dp[i+1][j-3]=min(result,dp[i+1][j-3])
๋ฆฌ์กฐํŠธ ๋ฐฉ๋ฌธ X dp[i+1][j]=min(result,dp[i+1][j])

 

 

 

์ฝ”๋“œ

import sys
input=sys.stdin.readline

n,m=map(int,input().split()) #n<=100
no=list(map(int,input().split()))
inf=sys.maxsize

dp=[[inf]*106 for _ in range(106)]
dp[0][0]=0

for i in range(n+1):
    for j in range(40): ##์ตœ๋Œ€ ์ฟ ํฐ ๋ฐœํ–‰ ๊ฐฏ์ˆ˜ ==40๊ฐœ
        if dp[i][j]==inf:
            continue
        result=dp[i][j]
        if i+1 in no:
            dp[i+1][j]=min(result,dp[i+1][j])
        if j>=3:
            dp[i+1][j-3]=min(result,dp[i+1][j-3])
            
        #1์ผ๊ถŒ
        dp[i+1][j]=min(dp[i+1][j],result+10000)
        #3์ผ๊ถŒ
        for k in range(1,4):
            dp[i+k][j+1]=min(dp[i+k][j+1],result+25000)
        #5์ผ๊ถŒ
        k=0
        for k in range(1,6):
            dp[i+k][j+2]=min(dp[i+k][j+2],result+37000)
print(min(dp[n]))

 

 

์–ด๋ ค์› ๋˜ ์ 

์ฒซ๋‚ ์— 3์ผ๊ถŒ์„ ๊ตฌ์ž…ํ•˜๋ฉด ๋‘˜์งธ ๋‚ ์—๋„ 25000์› ์ง€๋ถˆ๊ณผ ์ฟ ํฐ 1์žฅ ๋ณด์œ ๋Š” ์ ์šฉ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

๋งค์ผ๋งค์ผ ๊ฐ’์„ ๊ฐฑ์‹ ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

์ฒ˜์Œ์— 3์ผ๊ถŒ, 5์ผ๊ถŒ์„ ๊ตฌ๋งคํ•  ๋•Œ [i+3] ์ผ๊ณผ [i+5] ์ผ๋งŒ ๊ณ„์‚ฐํ•˜๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ํ‹€๋ ธ์—ˆ๋‹ค