[C++]N과 M (9 ~ 12) - BOJ 15663 ~ 15666
이 게시물에는 N과 M 시리즈 9부터 12번까지 4문제의 풀이가 들어있음.
BOJ 15663 15664 15665 15666
모든 조건부 조합의 경우를 출력해야 하는 완전탐색 문제다.
사전순 출력이므로 dfs로 쉽게 풀 수 있다.
또 cout << endl;
는 느리게 작동하므로 cout << "\n";
를 사용해야 한다.
앞선 5 ~ 8번 문제들과 다르게 주어지는 수 중에 중복되는 숫자가 존재한다.
중복된 수열을 출력하면 안되므로 같은 레벨의 depth에서 같은 수를 중복해서 호출하지 않도록 해야 한다.
따라서 tmp에 해당 값을 담고 매번 체크하며 넘어간다.
여기서 tmp는 지역변수로 정의해야한다.
각 depth의 tmp는 dfs가 호출 될 때 마다 의미하는 바가 다르기 때문이다.