티스토리 뷰

코딩테스트 대비

[백준] 1149번 RGB거리

happy_dohee 2022. 3. 1. 23:10
n = int(input())
array = []
for j in range(n):
    array.append(list(map(int, input().split())))
d = [[0 for i in range(3)] for j in range(n)]
d[0][0] = array[0][0]
d[0][1] = array[0][1]
d[0][2] = array[0][2]
for i in range(1, n):
    for j in range(3):
        if j == 0:
            tmp1 = d[i-1][j+1]
            tmp2 = d[i-1][j+2]
        elif j == 2:
            tmp1 = d[i-1][j-2]
            tmp2 = d[i-1][j-1]
        else:
            tmp1 = d[i-1][j-1]
            tmp2 = d[i-1][j+1]
        d[i][j] = min(tmp1, tmp2) + array[i][j]

print(min(d[n-1]))

RGB 세가지 밖에 없으니까 전부 if문 처리해버렸다.

더 많았으면 j == 0일 때와 j == n-1 일 때, 그리고 그 사이일 때로 나누면 된다. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함