풀이는 맞다고 생각합니다만 아마 출력할 답이 많을 경우 모든 경우를 탐색하기 전에 RUNTIME ERROR를 띄우면서 프로그램이 멈춰서 틀릴 것 같습니다.
예를 들면 아래와 같은 경우
input :
8 8
1 2 3 4 5 6 7 8
output :
1 2 3 4 5 6 7 8
1 2 3 4 5 6 8 7
...
8 7 6 5 4 3 2 1
잘 탐색하면 답인 8! = 40320가지만 보면 되지만, DFS로 위와 같이 돌면 8^8 = 16,777,216번(맞나?) 번이나 함수를 호출하게 되어 최대 함수 스택 수를 넘어 프로그램이 감당을 못 합니다.
ekfrhkquf12 4년 전
어디가 틀렸을까요? ㅠ n과 m 문제인데 반례를 혹시 제시해 주실 수 있으면 고치는 데 도움이 될 것 같습니다.
예제들에 대한 대답은 다 잘 나오는 것 같습니다.
중복되는 숫자들이 몇 번 나오는지를 저장한 리스트를 만들고,
중복되는 숫자들의 count를 줄이면서 dfs를 하는 식으로 코드를 짰습니다.