코-딩/BOJ

BOJ ::1149 RGB 거리

2020. 2. 3. 13:45
728x90

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

 

1149번: RGB거리

RGB거리에 사는 사람들은 집을 빨강, 초록, 파랑중에 하나로 칠하려고 한다. 또한, 그들은 모든 이웃은 같은 색으로 칠할 수 없다는 규칙도 정했다. 집 i의 이웃은 집 i-1과 집 i+1이고, 첫 집과 마지막 집은 이웃이 아니다. 각 집을 빨강으로 칠할 때 드는 비용, 초록으로 칠할 때 드는 비용, 파랑으로 드는 비용이 주어질 때, 모든 집을 칠하는 비용의 최솟값을 구하는 프로그램을 작성하시오.

www.acmicpc.net

DP문제!!

i 번째까지 칠했을 때 최소 가격 = (i-1) 번째까지 칠한 가격 + i 칠한 가격

=> d[i] = d[i-1] + i번째 최솟값 으로 생각할 수 있다.

 

하지만!!

이전을 R로 칠했을 때, G로 칠했을 때, B로 칠했을 때 최솟값이 각각 다르므로 세가지 경우를 각각 나눠서 생각해 준 후, 그것들끼리 최솟값을 찾아주어야 한다.

즉,

R로 칠한 경우 :  d[i][0] = min(d[i-1][2], d[i-1][2]) + color[i][0]

G로 칠한 경우 :  d[i][1] = min(d[i-1][0], d[i-1][2]) + color[i][1]

B로 칠한 경우 :  d[i][2] = min(d[i-1][0], d[i-1][1]) + color[i][2]

로 생각해주어야 한다.

 

import  sys
input = sys.stdin.readline

N = int(input())
rgb = []

for _ in range(N):
    rgb.append(list(map(int, input().split())))

dp = [[0] * 3 for _ in range(N + 1)]
dp[0][0] = rgb[0][0]
dp[0][1] = rgb[0][1]
dp[0][2] = rgb[0][2]

for i in range(1, N):
    dp[i][0] = min(dp[i - 1][1], dp[i - 1][2]) + rgb[i][0]  # RED
    dp[i][1] = min(dp[i - 1][0], dp[i - 1][2]) + rgb[i][1]  # GREEN
    dp[i][2] = min(dp[i - 1][0], dp[i - 1][1]) + rgb[i][2]  # BLUE

print(min(dp[N - 1]))
728x90
저작자표시 (새창열림)
'코-딩/BOJ' 카테고리의 다른 글
  • BOJ ::11057 오르막 수 (C++)
  • BOJ ::2156 포도주 시식 (C++/Python)
  • BOJ ::1676 팩토리얼 0의 개수 (C++)
  • BOJ ::1463 1로 만들기 (C++)
힞뚜루마뚜루
힞뚜루마뚜루
히++;힞뚜루마뚜루 님의 블로그입니다.
250x250
힞뚜루마뚜루
히++;
힞뚜루마뚜루
전체
오늘
어제
  • 히++; (107)
    • 코-딩 (50)
      • BOJ (8)
      • 프로그래머스 (19)
      • Leetcode (23)
    • IT (21)
      • Spring | Java (9)
      • CS (2)
      • Angular (2)
      • Design Pattern (4)
      • etc (4)
    • 후-기 (12)
      • 취업 후기 (7)
      • 일상 후기 (5)
    • 일기 (24)

블로그 메뉴

  • 홈
  • Guestbook
  • Tag Cloud
  • 글 작성

공지사항

인기 글

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
힞뚜루마뚜루
BOJ ::1149 RGB 거리
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.