지금 i번째 집을 칠할 때 우리는 무엇을 신경써야할까??
앞, 뒤?
뒷 집을 무슨 색으로 칠할지는 그 때 가서 생각하자!
현재 집을 초록색으로 칠하고싶다면, 그 최솟값은
앞집을 파랑색으로 칠한 경우, 빨간색으로 칠한 경우
이 두가지 경우중 min값을 선택하여 현재 집을 초록색으로 칠할 때 드는 비용에 합쳐 저장한다.
같은 방식으로 두 번 더 진행하면,
현재 집을 앞 집과 색깔이 겹치지 않으면서, 해당 집을 각각 R, G, B로 칠할 때의 최소 비용을 구할 수 있다.
마지막에 result에서 최솟값을 취해줘야 모든 집을 칠하는 최솟값을 구하게 되는데,
배열의 최소, 최대를 .max(), .min()으로 가져올 때는 항상 Optional()타입으로 가져오므로 !로 언래핑을 해줘야한다!
백준 2579: 계단오르기 (Swift) (0) | 2022.06.03 |
---|---|
백준 11047: 동전 0 (Swift) (0) | 2022.06.03 |
백준 11726: 2Xn 타일링 (0) | 2022.06.01 |
백준 10162: 전자레인지 (Swift) (0) | 2022.06.01 |
백준 2217: 로프 (Swift) (0) | 2022.06.01 |