본문 바로가기

알고리즘 문제 풀이/Baekjoon

17404 - RGB 거리 2

반응형
SMALL

안녕하세요. 꼬동입니다.

 

최근 이미지 분석 스터디를 시작했는데요.

 

거기서 숙제가 생겼는데, RGB Leveling 공부를 해오는 숙제가 있습니다.

 

하지만, 전 알고리즘 장인(예비)

 

RGB Leveling을 공부하기 전, RGB 알고리즘 문제를 풉시다.

 

그래서 오늘 RGB 거리 문제를 들고 왔습니다.

 

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

 

17404번: RGB거리 2

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

www.acmicpc.net

 

1은 어디갔냐고요 ?

 

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

 

1149번: RGB거리

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

www.acmicpc.net

 

넘 쉬워서 줄이겠습니답.

 

아마 여러분들도 보고 싶지 않을거에요.


음, RGB 거리 2는 처음과 끝도 달라야합니다.

 

그래서 처음부터 색을 정하고, 마지막에 해당 색을 제외하고 DP를 구하면 됩니다.

 

이것도 너무 설명이 성의없넹

 

N = int(input())

arr = [list(map(int, input().split())) for n in range(N)]

result = 1000 * 1000 + 3

def check(N, color):
    global result

    for _ in range(1, N):
        r, g, b = arr[_]
        br, bg, bb = dp
        dp[0] = r + min(bg, bb)
        dp[1] = g + min(br, bb)
        dp[2] = b + min(br, bg)

    if color == 0:
        result = min(result, min(dp[1], dp[2]))
    
    if color == 1:
        result = min(result, min(dp[0], dp[2]))

    if color == 2:
        result = min(result, min(dp[0], dp[1]))

# R, G, B
dp = [0, 0, 0]

# R을 골랐다 치고
v = arr[0][0]
dp = [1001, v, v]
check(N, 0)

# G를 골랐다 치고
v = arr[0][1]
dp = [v, 1001, v]
check(N, 1)

# B를 골랐다 치고
v = arr[0][2]
dp = [v, v, 1001]
check(N, 2)

print(result)

어...

 

음...

 

자야지

 

 


이상 17404 - RGB 거리 2 였습니다. ^_^

반응형
LIST

'알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글

시간 복잡도 느린 정렬 모음 - python  (0) 2023.06.16
2243 - 사탕상자  (0) 2021.10.31
5676 - 음주 코딩  (0) 2021.10.16
3653 - 영화 수집  (0) 2021.10.10
1107 - 리모컨  (0) 2021.10.09