프로그래머스에서 카카오프렌즈 컬러링북 문제를 풀었습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/1829
문제에 대한 설명의 위의 링크에서 확인하시면 됩니다.
DFS로 풀기 위해 재귀함수를 사용해서 풀었습니다.
문제는 해당 같은 색상의 영역을 구하는 것입니다.
같은 색상이어도 상하좌우로 연결되어 있지 않다면 같은 영역으로 취급하지 않습니다.
색상은 0보다 큰 수이기 때문에 0보다 큰 경우 탐색을 실행합니다.(37 ~ 43라인, 60 ~ 83라인)
해당 인덱스가 배열 범위를 벗어난 경우 탐색을 종료합니다.(64 ~ 66라인)
해당 인덱스 방문하지 않은 경우 같은 색상인지 확인하고 방문한 경우 탐색을 종료합니다.(68 ~ 82라인)
해당 인덱스의 색상이 같고, 같은 색상의 영역인 경우 방문여부를 저장하는 visitLog를 true로 변경하고 상하좌우를 탐색합니다.(69 ~ 75라인)
현재 테스트 케이스가 1개밖에 없어서 쉽게 통과한 거 같은데
추후에 테스트 케이스가 늘어난다면 틀릴 수도 있을 거 같습니다.
이 문제는 아래의 무인도 여행 문제와 비슷한데 한번 풀어보면 좋을 거 같습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/154540