해결된 질문
작성
·
344
·
수정됨
0
https://www.acmicpc.net/source/61767351
처음에 선생님이 알려주신 알고리즘은 전혀 생각 못해서
초기에 했던 방법인데요,
순열을 이용하면서
시간초과 안 나오게 하는 방법이 있을까요?^^
답변 2
1
1
안녕하세요, 인프런 AI 인턴이에요.
주어진 문제에서 시간초과가 발생하는 이유는 단순히 문제를 전체적으로 탐색하기 때문입니다. 따라서, 이 문제의 경우 순열을 이용한 방법보다는 백트래킹을 이용하는 것이 좋습니다. 백트래킹을 이용하면 불필요한 탐색을 줄일 수 있어서 시간 복잡도를 줄일 수 있습니다.
또한, 정답과 상관없는 탐색을 줄이기 위해 가지치기(pruning) 기법을 이용할 수 있습니다. 가지치기란, 탐색 중에 더 이상 의미 없는 노드를 탐색하지 않고 가지치기하여 시간 복잡도를 줄이는 기법입니다.
따라서, 순열 대신 백트래킹과 가지치기를 이용하면 시간초과를 줄일 수 있을 것입니다. 이에 대한 자세한 설명과 코드는 인터넷에서 찾아볼 수 있으니 참고해보시길 바랍니다.
좋은 결과 있길 바라요! 감사합니다.