알고리즘 DFS 문제 풀다가 아웃풋이 이상하게 안나오길래 하나하나 체크하고 의심하다가 결국 마지막에 찾은 점이 변수 할당부분 이었다.
사진에 나온것 처럼 #78, #79행에 x, y를 저런식으로 할당해주면 #83행에 dfs(grid, x, y) 함수를 탔을때, #60행처럼 if조건에 걸려 return이 되더라도 해당 x , y값은 사라지지 않고 다음번 for loop에 사용되어 버린다.
원래 dfs 함수에서 종료조건에 걸리면 그 해당 인덱스 x, y는 사용되지 않고 그 전 인덱스 x, y를 사용해야 한다.
중요 : 재귀 함수에 넣을 파라미터가 해당 문제의 인덱스라면, 인덱스 계산후에 새로운 let, const 변수에 할당해서 사용한다. 절대 x+= 형태로 사용하지 않는다.
위코드 처럼
재귀 종료조건에 걸리면 자연스럽게 그 전에 인데스 조건으로 돌아간다. 왜냐면 재귀함수 파라미터에는 새로운 변수로 값을 넣었기에 그 전 값 주소에 영향을 미치지 않는다.