백준 1149. RGB거리

2024. 3. 10. 15:08·백준

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

 

1149번: RGB거리

첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나

www.acmicpc.net

'''
인접한 집들의 색이 같지 않아야 함
R,G,B 세 가지 색으로 칠함

i번째 집을 칠하는 비용은 i-1번째 집에 따라 달라짐
dp[i][color]를 i번째 집까지 칠하는 데 드는 최소 비용으로 설정
'''

import sys
input = sys.stdin.readline

N = int(input())
cost = [list(map(int, input().split())) for _ in range(N)]
dp = [[0]*3 for _ in range(N)]
dp[0] = cost[0] # 첫 번째 집을 칠하는 비용은 그대로(시작이니까)

for i in range(1,N):
    dp[i][0] = min(dp[i - 1][1], dp[i - 1][2]) + cost[i][0]  # 빨강으로 칠하는 최소 비용
    dp[i][1] = min(dp[i - 1][0], dp[i - 1][2]) + cost[i][1]  # 초록으로 칠하는 최소 비용
    dp[i][2] = min(dp[i - 1][0], dp[i - 1][1]) + cost[i][2]  # 파랑으로 칠하는 최소 비용

print(min(dp[N-1]))

'''
이렇게 dp를 따로 안만들고 갱신해나가는 방법도 있음! 메모리 차이는 없고 시간 차이 조금 남!
import sys
input = sys.stdin.readline

N = int(input())
cost = [list(map(int, input().split())) for _ in range(N)]
    
for i in range(1,n):
    cost[i][0]= min(cost[i-1][1],cost[i-1][2]) + cost[i][0]
    cost[i][1]= min(cost[i-1][0],cost[i-1][2]) + cost[i][1]
    cost[i][2]= min(cost[i-1][0],cost[i-1][1]) + cost[i][2]

print(min(cost[n-1][0],cost[n-1][1],cost[n-1][2]))
'''

+ 24.10.24

n = int(input())

# 인접한 하나 or 두개의 집과 색이 같으면 안됨!

graph = [list(map(int,input().split())) for _ in range(n)]
dp = [[0 for _ in range(3)] for _ in range(n)]

for k in range(3): # 초기값 세팅
    dp[0][k] = graph[0][k]

# 1번째 집부터 n-1번째 집까지의 최소 비용을 구함
for i in range(1, n):
    dp[i][0] = min(dp[i-1][1], dp[i-1][2]) + graph[i][0]  # R을 선택한 경우
    dp[i][1] = min(dp[i-1][0], dp[i-1][2]) + graph[i][1]  # G를 선택한 경우
    dp[i][2] = min(dp[i-1][0], dp[i-1][1]) + graph[i][2]  # B를 선택한 경우

print(min(dp[-1]))
저작자표시 (새창열림)

'백준' 카테고리의 다른 글

백준 12852. 1로 만들기2  (0) 2024.03.10
백준 11726. 2xn 타일링  (0) 2024.03.10
백준 2579. 계단 오르기  (0) 2024.03.10
백준 9095. 1, 2, 3 더하기  (0) 2024.03.09
백준 10844. 쉬운 계단 수  (0) 2024.03.08
'백준' 카테고리의 다른 글
  • 백준 12852. 1로 만들기2
  • 백준 11726. 2xn 타일링
  • 백준 2579. 계단 오르기
  • 백준 9095. 1, 2, 3 더하기
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (383) N
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅&리팩토링 (6) N
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (2)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    Til
    항해99
    코딩테스트준비
    개발자취업
    99클럽
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
백준 1149. RGB거리
상단으로

티스토리툴바