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

lego0313님의 프로필 이미지
lego0313

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

3주차 개념 #1. 완전탐색과 백트래킹

백트래킹을 사용하는 경우 질문

해결된 질문

작성

·

313

0

안녕하세요 강사님, 강의 잘 듣고 있습니다.

백트래킹은 완전탐색시 탐색하지 않아도 되는 부분은 건너뛰는 기능을 한다고 알고 있습니다.

백트래킹은 기본적으로 완전탐색의 연산량을 줄여주는 역할을 한다는 것인데,

완전탐색으로 풀면 시간초과가 나는 문제를, 백트래킹을 적용해서 풀면 시간초과가 나지 않는 건 어떻게 판단할 수 있나요?

완전탐색에 백트래킹을 적용해도 시간초과가 나는 경우에는 지체없이 다른 풀이법을 찾아야 하나요?

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 lego님 ㅎㅎ

 

완전탐색으로 풀면 시간초과가 나는 문제를, 백트래킹을 적용해서 풀면 시간초과가 나지 않는 건 어떻게 판단할 수 있나요?

>>

일단은 완탐으로 접근 -> 시간초과 -> 줄일 수 있는 요소가 있을까?(최댓값 먼저 찾으면 그 이후부터는 안찾아도 된다거나 이거는 큰거부터 접근하면 된다거나...) 하는 부분을 찾고 -> 백트래킹

이런 플로우라고 이해하시면 됩니다.

 

완전탐색에 백트래킹을 적용해도 시간초과가 나는 경우에는 지체없이 다른 풀이법을 찾아야 하나요?

>> 네 맞습니다. 알고리즘 문제를 푸는 "정도"는 사실 얼마나 빠르게 알맞는 해답을 찾는 과정이라고 생각하시면 됩니다.

A라는 방법 -> 틀림 -> 그럼 B라는 방법 -> 틀림 -> C라는 방법 -> 맞음

이러한 플로우를 빠르게 하는게 중요합니다. ㅎ



또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

0

안녕하세요, 인프런 AI 인턴입니다.
lego0313님, 질문 주셔서 감사합니다.

백트래킹을 사용하여 완전탐색에서 시간초과가 발생하는 문제를 해결할 수 있는지 여부는 여러 요소에 의존합니다.
문제의 제약 조건, 탐색 공간의 크기, 가지치기(pruning)의 효율성 등을 고려해야 합니다.

  1. 문제를 분석하여 백트래킹의 적용 가능성을 판단합니다. 예를 들어, 문제의 해가 특정 조건을 만족하는지 빠르게 확인할 수 있고, 이를 통해 불필요한 탐색을 건너뛸 여지가 있다면 백트래킹이 유용할 수 있습니다.

  2. 문제의 데이터 크기나 제한 시간을 확인하여 알고리즘의 효율을 예측합니다. 예를 들어, 탐색해야 하는 공간이 매우 크지만 상대적으로 가지치기가 잘 되어 실제 탐색 공간이 작다면 백트래킹이 시간을 절약할 수 있습니다.

  3. 백트래킹을 적용해도 여전히 시간 초과가 발생하는 경우, 문제를 해결하기에 알고리즘의 성능이 충분하지 않음을 의미합니다. 이때는 보다 효율적인 알고리즘(예: 동적 계획법, 그리디 알고리즘)을 고려하거나, 다른 최적화 방법을 찾아보셔야 합니다.

  4. 실제 문제에서 백트래킹의 효과를 판단하려면 테스트 케이스로 실험해보는 것이 좋습니다. 다양한 입력 값에 대한 반응을 테스트하며 가지치기의 조건을 조정하여 최선의 결과를 도출해야 합니다.

백트래킹은 재귀 호출을 통한 구현이 일반적이므로, 재귀의 깊이가 너무 깊어지지 않도록 유의하시고, 불필요한 탐색을 최소화하는 가지치기를 충분히 고려하셔야 할 것입니다.

lego0313님의 프로필 이미지
lego0313

작성한 질문수

질문하기