기록하고 까먹지 말기

1149 본문

전공/백준

1149

yha97 2022. 11. 16. 15:14

날짜 : 2022. 11. 16

사용 언어 : python

 

문제

 

 

코드

import sys
t = int(sys.stdin.readline())
color = []
dp = [0] * (t)
choice = 0 # 이전 선택

for i in range(t):
    color.append(list(map(int, sys.stdin.readline().split())))

for i in range(1, t): # 각 색깔을 선택했을 경우 가능한 경우의 수에서 최솟값 선택
    color[i][0] += min(color[i - 1][1], color[i - 1][2]) # 빨강 선택
    color[i][1] += min(color[i - 1][0], color[i - 1][2]) # 초록 선택
    color[i][2] += min(color[i - 1][0], color[i - 1][1]) # 파랑 선택

print(min(color[-1])) # 최종값 출력
#print(color)

 

 

풀이

- 각 색깔을 선택한 경우 해당 색깔을 제외한 경우의 수에서 최솟값을 선택하되 모든 색깔의 케이스를 고려하여 문제를 해결했다.

 

 

알게된 점

- 케이스가 하나만 있는줄 알고 각 라인에서 min을 고르되 이전 초이스를 기억해서 그 줄의 색깔을 제외하는 방식으로 풀었지만 작렬하게 틀렸다.

- 그래서 다른 풀이를 조금 참조한 결과 모든 케이스에 대해 계산해야한다는 것을 알았고 쉽게 해결할 수 있었다.

 

 

참고 사이트

 

'전공 > 백준' 카테고리의 다른 글

1932  (0) 2022.11.19
11053  (0) 2022.11.17
12904  (0) 2022.11.16
4963  (0) 2022.11.16
DP 응용문제(이코테) - 3  (0) 2022.11.15