컬러 퍼즐 최저 횟수 계산 알고리즘을 만들던 중, 이전에 만들었던 Flood Fill 알고리즘에 문제점이 발견되어 수정하기로 하였다.
| 이전 코드 |
|---|
![]() |
일반적인 Flood Fill: 시작점에서 인접한 '같은 색상'의 셀들을 탐색하며 새로운 색상으로 칠한다.
현재 코드 (TrySolve): 시작 셀을 선택된 색으로 바꾼 후, 인접한 셀 중 이전 색상(prevColor)과 같은 셀을 찾아 재귀 호출한다.
TrySolve는 재귀적 DFS이므로 격자가 깊어지면 스택 오버플로우 위험이 있다.
| 개선한 코드 |
|---|
![]() |
| Test |
|---|
![]() |
![]() |
| TrySolve(DFS 알고리즘)의 경우 |
|---|
![]() |
| FloodFill(BFS 알고리즘)의 경우 |
|---|
![]() |
원래는 컬러 퍼즐 최저 횟수 계산 알고리즘을 만들려고 Gemini의 도움을 받고 있었는데, BFS와 A스타 알고리즘 중에서 A스타가 더 효율적이라고 해서 해당 알고리즘을 공부하다가 문제점을 찾게 되었다. 생각보다 혼자공부하기에 AI가 많이 도움 되는 것 같다.
참고로 Gemini도 해당 퍼즐을 못 풀었다.
| Gemini |
|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |