Algorithm/Java

[알고리즘_Java] 백준 10974번 모든 순열 (재귀)

Cune 2022. 3. 12. 17:16

 


 

 

<풀이>

 

함수의 첫번째 if문은 sub배열의 사이즈가 n-1일때 탈출 조건을 만들어 놓고 마지막 숫자를 넣어서 사이즈가 n이 되고 result에 저장된다.

sub로 기본값=시작값을 잡고 new_sub를 새로 생성하고 함수를 호출 할때마다 new_sub는 sub로 넣어준다.

(표를보면 DFS 호출이 늘어날때마다 new_sub값이 sub값이 되는걸 볼 수 있다)

거의 2주간 스터디에서 재귀문제 이거 하나로만 계속 보고있었다... 코드는 스터디장님이 직접 짜셨다.

계속 DFS 함수를 몇번이나 호출하고 return으로 돌아가는게 이해가 안가서 표로 만들어봤다.

return 했을때의 i의 값이 너무 헷갈렸는데 일단 정답을 아니까 표를 채우고 i값을 따라가니까 리턴했을때 어디로 돌아가는지 알 수 있었다.

정말 어렵고 복잡하지만 2주동안 들여봤더니 이제서야 감이 잡히고 재귀를 알아가고있다! 이것보다 어려운 문제들이 얼마나 많은데 이정도로 포기하지말자!!