BOJ 1149

๐Ÿ•ต๏ธ‍โ™€๏ธ ๋ฌธ์ œ


RGB๊ฑฐ๋ฆฌ์—๋Š” ์ง‘์ด N๊ฐœ ์žˆ๋‹ค. ๊ฑฐ๋ฆฌ๋Š” ์„ ๋ถ„์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ณ , 1๋ฒˆ ์ง‘๋ถ€ํ„ฐ N๋ฒˆ ์ง‘์ด ์ˆœ์„œ๋Œ€๋กœ ์žˆ๋‹ค.

์ง‘์€ ๋นจ๊ฐ•, ์ดˆ๋ก, ํŒŒ๋ž‘ ์ค‘ ํ•˜๋‚˜์˜ ์ƒ‰์œผ๋กœ ์น ํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ๊ฐ์˜ ์ง‘์„ ๋นจ๊ฐ•, ์ดˆ๋ก, ํŒŒ๋ž‘์œผ๋กœ ์น ํ•˜๋Š” ๋น„์šฉ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์•„๋ž˜ ๊ทœ์น™์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ๋ชจ๋“  ์ง‘์„ ์น ํ•˜๋Š” ๋น„์šฉ์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•ด๋ณด์ž.

  • 1๋ฒˆ ์ง‘์˜ ์ƒ‰์€ 2๋ฒˆ ์ง‘์˜ ์ƒ‰๊ณผ ๊ฐ™์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
  • N๋ฒˆ ์ง‘์˜ ์ƒ‰์€ N-1๋ฒˆ ์ง‘์˜ ์ƒ‰๊ณผ ๊ฐ™์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
  • i(2 ≤ i ≤ N-1)๋ฒˆ ์ง‘์˜ ์ƒ‰์€ i-1๋ฒˆ, i+1๋ฒˆ ์ง‘์˜ ์ƒ‰๊ณผ ๊ฐ™์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

 

 

๐Ÿ’ก ์ž…๋ ฅ


์ฒซ์งธ ์ค„์— ์ง‘์˜ ์ˆ˜ N(2 ≤ N ≤ 1,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ ์ง‘์„ ๋นจ๊ฐ•, ์ดˆ๋ก, ํŒŒ๋ž‘์œผ๋กœ ์น ํ•˜๋Š” ๋น„์šฉ์ด 1๋ฒˆ ์ง‘๋ถ€ํ„ฐ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ง‘์„ ์น ํ•˜๋Š” ๋น„์šฉ์€ 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

 

 

 

๐Ÿ“Œ ์ถœ๋ ฅ


  • ์ฒซ์งธ ์ค„์— ๋ชจ๋“  ์ง‘์„ ์น ํ•˜๋Š” ๋น„์šฉ์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

๐Ÿ™‹‍โ™€๏ธ ํ’€์–ด๋ณด์ž~


๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ์ ‘๊ทผํ•ด์„œ Memoization์„ ์‚ฌ์šฉํ•˜์ž.

 

2์ฐจ์› ๋ฐฐ์—ด์„ ์ด์šฉํ•ด์„œ ๊ฐ ์ž๋ฆฌ๋งˆ๋‹ค RGB์˜ ๋น„์šฉ์„ ๋‹ด์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์ž.

just like... -> [ [ 1๋ฒˆ ์ง‘์˜ R๋น„์šฉ, 1๋ฒˆ ์ง‘์˜ G๋น„์šฉ, 1๋ฒˆ ์ง‘์˜ B๋น„์šฉ ] , [ 2๋ฒˆ ์ง‘์˜ R๋น„์šฉ, ....

 

์ ํ™”์‹์„ ๋– ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ i๋ฒˆ์งธ์˜ ์ง‘๊ณผ ๊ทธ ์•ž๋’ค์˜ i-1๋ฒˆ์งธ ์ง‘๊ณผ i+1๋ฒˆ์งธ ์ง‘์„ ์ƒ๊ฐํ•ด๋ณด์ž.

i+1๋ฒˆ์งธ ์ง‘์€ i๋ฒˆ์งธ ์ง‘์˜ ์ƒ‰์— ์˜ํ–ฅ์„ ๋ฐ›์ง€๋งŒ i-1๋ฒˆ์งธ ์ง‘์˜ ์ƒ‰์—๋Š” ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.

 

 

์ด ๊ฐ™์€ ์ƒํ™ฉ์„ ์ ํ™”์‹์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด์ž. i์™€ i+1๋งŒ ์ƒ๊ฐํ•ด์ฃผ๋ฉด๋œ๋‹ค~

  1. i+1๋ฒˆ์งธ ์ง‘์ด R์ผ ๋•Œ, i-1์€์€ G๋‚˜ B ์ค‘ ๋” ์ ์€ ๋น„์šฉ์„ ๊ฐ–๋Š” ๊ฒƒ์„ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค.
  2. i+1๋ฒˆ์งธ ์ง‘์ด G์ผ ๋•Œ, i-1์€์€ R๋‚˜ B ์ค‘ ๋” ์ ์€ ๋น„์šฉ์„ ๊ฐ–๋Š” ๊ฒƒ์„ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค.
  3. i+1๋ฒˆ์งธ ์ง‘์ด B์ผ ๋•Œ, i-1์€์€ R๋‚˜ G ์ค‘ ๋” ์ ์€ ๋น„์šฉ์„ ๊ฐ–๋Š” ๊ฒƒ์„ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

# RGB

# n : ์ง‘์˜ ์ˆ˜
n = int(input())

# ์ดˆ๊ธฐ์„ธํŒ… 0์œผ๋กœ ๋‹ค ๊น”์•„๋†“๊ฑฐ๋ผ
dp = [[0, 0, 0] for _ in range(n)]

for i in range(n):
    # ์šฐ์„  ๋จผ์ € ์ž…๋ ฅ๋ฐ›์Œ
    cost = list(map(int, input().split()))

    # ์ฒซ ์ž…๋ ฅ์ธ ๊ฒฝ์šฐ, ๊ทธ๋ƒฅ cost๋ฅผ ๋‹ด์•„์ฃผ์„ธ์š”.
    if i == 0:
        dp[0] = cost
    else:
        # ์ ํ™”์‹ ๋„ฃ์–ด์ฃผ์„ธํšจ
        dp[i][0] = min(dp[i-1][1], dp[i-1][2]) + cost[0] # i๋ฒˆ์งธ์ง‘์ด R์ผ๊ฒฝ์šฐ
        dp[i][1] = min(dp[i-1][0], dp[i-1][2]) + cost[1] # i๋ฒˆ์งธ์ง‘์ด G์ผ๊ฒฝ์šฐ
        dp[i][2] = min(dp[i-1][0], dp[i-1][1]) + cost[2] # i๋ฒˆ์งธ์ง‘์ด B์ผ๊ฒฝ์šฐ

# dp ๋ฆฌ์ŠคํŠธ์˜ n-1๋ฒˆ์งธ์— ์žˆ๋Š” ๋ˆ„์ ๋œ RGB ๋น„์šฉ ์ค‘ ๊ฐ€์žฅ ์ตœ์†Œ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.
print(min(dp[n-1]))

+ Recent posts