λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
CS/μ•Œκ³ λ¦¬μ¦˜

λ°±μ€€ 1149 파이썬 - RGB거리 - 동적 κ³„νšλ²•

by πŸŒ»β™š 2021. 10. 10.

λ°±μ€€ 1149 파이썬

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

 

1149번: RGB거리

첫째 쀄에 μ§‘μ˜ 수 N(2 ≤ N ≤ 1,000)이 주어진닀. λ‘˜μ§Έ 쀄뢀터 N개의 μ€„μ—λŠ” 각 집을 λΉ¨κ°•, 초둝, νŒŒλž‘μœΌλ‘œ μΉ ν•˜λŠ” λΉ„μš©μ΄ 1번 집뢀터 ν•œ 쀄에 ν•˜λ‚˜μ”© 주어진닀. 집을 μΉ ν•˜λŠ” λΉ„μš©μ€ 1,000보닀 μž‘κ±°λ‚˜

www.acmicpc.net

이번 λ¬Έμ œλŠ” 2차원 λ°°μ—΄μ—μ„œ μ•žλ’€λ‘œ 인덱슀 λ²ˆν˜Έκ°€ λ‹€λ₯΄κ²Œν•΄μ„œ ν•©μ‚°ν•œκ²Œ κ°€μž₯ 적은 값을 κ΅¬ν•˜λŠ” λ¬Έμ œμ΄λ‹€.이런 μ΅œμ†Œλ‚˜ μ΅œλŒ€κ°’μ„ κ΅¬ν•˜λŠ” λ¬Έμ œλŠ” κ°€μž₯ λ¨Όμ € 동적 κ³„νšλ²•μ΄ λ– μ˜€λ₯Έλ‹€. 그런데... λ§Œμ•½... κ°€μž₯ 적은 λΉ„μš©λ§Œ μ €μž₯ν•˜κ² λ‹€λŠ” 생각에 쀑점을 두면... μ•„λž˜μ™€ 같은 μ˜ˆμ™Έμ‚¬ν•­μ΄ λ°œμƒν•  수 μžˆλ‹€.

 

이전에 κ°€μž₯ 적은 λΉ„μš©λ§Œ κ³ λ €ν•˜λ©΄.... μœ„μ™€ 같이 λΉ„μš©μ΄ 같은 경우... ν˜„μž¬ μ§‘μ—μ„œ 이전에 μ–΄λ–€ 색을 μΉ ν–ˆλŠ”μ§€... κ΅¬λΆ„ν•΄μ•Όν•˜λŠ” λ¬Έμ œκ°€ μƒκΉλ‹ˆλ‹€. κ·Έλž˜μ„œ ν˜„μž¬ μ§‘μ—μ„œ 각각 색을 μΉ ν–ˆμ„ λ•Œμ˜ κ°€μž₯ 적은 λΉ„μš©μ„ μ €μž₯ν•΄μ„œ μž¬μ‚¬μš©ν•˜λŠ” 것을 μ€‘μ μœΌλ‘œ λ‘¬μ•Όν•œλ‹€.

 

 

Python 풀이

import sys
read = sys.stdin.readline

N = int(read())
cache =[list(map(int, read().split())) for _ in range(N)]

for i in range(1, N):
    cache[i][0] += min(cache[i-1][1], cache[i-1][2])
    cache[i][1] += min(cache[i-1][0], cache[i-1][2])
    cache[i][2] += min(cache[i-1][0], cache[i-1][1])
print(min(cache[-1]))
  • μ£Όμ–΄μ§€λŠ” 집과 μƒ‰μΉ ν•˜λŠ” λΉ„μš©μ„ 미리 λ°°μ—΄λ‘œ λ§Œλ“€μ–΄ λ†“λŠ”λ‹€.
  • 이전 집에 μƒ‰μΉ ν–ˆμ„ λ•Œμ˜ μ΅œμ†Ÿκ°’μ„ κ°–κ³  μ˜€λŠ”λ°... ν˜„μž¬ 색을 μ œμ™Έν•˜κ³  λ‚˜λ¨Έμ§€ λ‘κ°œμ˜ μƒ‰μ˜ λΉ„μš© 쀑 μ΅œμ†Ÿκ°’μ„ κ°–κ³ μ˜¨λ‹€.
    • 이러면 μ§‘μ—μ„œ 각각 색을 μΉ ν–ˆμ„ λ•Œμ˜ μ΅œμ†Ÿκ°’μ΄ λ°°μ—΄λ‘œ μ €μž₯λœλ‹€.
  • λ§ˆμ§€λ§‰ μ—΄μ—μ„œ κ°€μž₯ μ΅œμ†Ÿκ°’μ΄ μ΅œμ’…μ μœΌλ‘œ 얻을 수 μžˆλŠ” μ΅œμ†Ÿκ°’μ΄ λœλ‹€.

λŒ“κΈ€