Swift알고리즘

백준 1149: RGB거리 (Swift)

앱등개발자IOS 2022. 6. 2. 00:18

지금 i번째 집을 칠할 때 우리는 무엇을 신경써야할까??

 

앞, 뒤?

 

뒷 집을 무슨 색으로 칠할지는 그 때 가서 생각하자!

 

현재 집을 초록색으로 칠하고싶다면, 그 최솟값은

앞집을 파랑색으로 칠한 경우, 빨간색으로 칠한 경우 

이 두가지 경우중 min값을 선택하여 현재 집을 초록색으로 칠할 때 드는 비용에 합쳐 저장한다.

 

같은 방식으로 두 번 더 진행하면,

현재 집을 앞 집과 색깔이 겹치지 않으면서, 해당 집을 각각 R, G, B로 칠할 때의 최소 비용을 구할 수 있다.

 

마지막에 result에서 최솟값을 취해줘야 모든 집을 칠하는 최솟값을 구하게 되는데,

배열의 최소, 최대를 .max(), .min()으로 가져올 때는 항상 Optional()타입으로 가져오므로 !로 언래핑을 해줘야한다!