문제
풀이
* 조합을 사용해서 백트래킹을 하며 모든 경우를 다 해본다.
* 첫 행과 마지막 행은 흰색 / 빨간색으로 고정된다.
2행부터 n-1 행까지의 조합을 구한다.
* 조합을 구할 때 파란색이 반드시 포함되어야 한다.
* W = 1
B = 2
R = 3
으로 치환을 했다.
색을 칠 할 때 이전의 행에 칠해진 색과 숫자가 같거나, 더 큰 숫자만 칠할 수 있다.
예를 들어, 흰 -> 파 (O) / 파 -> 흰(X)
파 -> 빨 (O) / 빨 -> 파(X)
* 이 특징을 이용해서 모든 경우를 전부 구하지 않고도 정답을 구할 수 있다.
* chk[] => 이 배열에는 각 행마다 칠해질 색의 수가 지정된다.
* n-1 행까지 칠해질 색이 정해졌다면 calc() 에서 정해진 색으로 바꾸기 위해 몇 개의 칸을 바꿔야 하는지 계산하여 반환한다.
'SWEA > D5' 카테고리의 다른 글
[SWEA] 1249. 보급로 (0) | 2020.05.18 |
---|---|
[SWEA] 1824. 혁진이의 프로그램 검증 (0) | 2020.05.04 |
[SWEA 7393][D4][JAVA] 대규의 팬덤활동 (0) | 2019.05.14 |
[SWEA 4411][D5][JAVA] 덕환이의 카드 뽑기 (0) | 2019.05.08 |