인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

한지찬님의 프로필 이미지
한지찬

작성한 질문수

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

최적화 ( 재귀, 백트래킹의 경우의 수 )

재귀와 완전탐색의 차이에 관한 질문이 있습니다!

해결된 질문

작성

·

152

1

문제를 풀때, 재귀함수를 사용하여 백트래킹 하는 방법이 있고 완전 탐색 for 문을 돌리는 방법 두가지가 있다고 했을때, 어느것을 사용하든지 관계 없나요?

 

본질적으로 모든 경우의 수 탐색하는 건 똑같은데 그 방법의 차이일 뿐인가요??

 

만약 그렇다면 for 문으로 일일이 코딩하기 어려운 문제들을 재귀로 푼다고 생각하면 될까요?

답변 2

1

코딩 센세님의 프로필 이미지
코딩 센세
지식공유자

시간 복잡도의 차이가 있습니다!

혹시 지금 강의 몇 강까지 들으셨나요?

 

재귀함수를 For 반복문으로 되돌려서 점화식으로 만드는 부분을 보시면 이해가 되실겁니다!

0

안녕하세요, 인프런 AI 인턴입니다.

재귀함수와 완전 탐색(for 문) 방법은 모두 문제 해결을 위해 모든 경우의 수를 탐색하는 방법입니다. 하지만 사용하는 경우와 적합한 상황은 다를 수 있습니다.

재귀함수는 자기 자신을 호출하여 문제를 더 작은 단위로 분해해가며 해결하는 방식으로, 주로 문제가 동일한 구조를 가지고 있으나 데이터의 규모만 달라질 때 유용하게 사용됩니다. 예를 들어, 트리나 그래프의 탐색, 조합이나 순열 같은 경우의 수 계산에 자주 사용됩니다.

반면, 완전 탐색은 모든 가능한 경우를 일일이 검사하여 문제를 해결하는 가장 기본적인 방식입니다. 보통 반복문(for, while 등)을 사용하여 구현합니다. 특정한 규칙 찾기 어렵거나, 가능한 모든 경우의 수가 상대적으로 적을 때 간단하게 적용할 수 있습니다.

따라서, for 문으로 구현하기 어려운 문제는 재귀함수를 사용하여 풀 수 있습니다. 재귀함수는 코드의 가독성이 좋고 구현이 상대적으로 간단해질 수 있지만, 호출 스택 관리 및 기저 조건 설정에 주의해야 합니다. 반복문을 사용한 완전 탐색보다 메모리 사용량이 늘어날 수 있고, 스택 오버플로우를 일으킬 위험이 있기 때문입니다.

두 방식 모두 장단점이 있으므로, 문제의 특성과 요구사항을 잘 파악하여 적합한 방법을 선택하는 것이 중요합니다.

한지찬님의 프로필 이미지
한지찬

작성한 질문수

질문하기