42라인까지 돌린 결과 ans 를 찍어보시면 이해가 되실 것 같습니다.
동일한 숫자가 있을 경우에 ans 의 결과가 소팅되지 않은 순서로 나와서 문제인데,
5 3
1 2 3 4 5
일 경우
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
이렇게 나오겠죠? (42라인의 ans가..)
5 3
1 2 2 4 5
일 경우는 어떻게 될지.. 위에서 3을 2로 바꾼 결과와 같을 것 입니다.
1 2 2
1 2 4
1 2 5
1 2 4
1 2 5
1 4 5
2 2 4
2 2 5
2 4 5
2 4 5
결과를 보면 1 2 4 , 1 2 5가 순서가 섞여 있죠.
그래서 소팅도 안되고 44라인에서 중복도 걸러지지 않을 것 같습니다.
해결하려면 43 라인을 넣거나 (그러면 41라인 소팅을 할 필요가 없을 것도 같네요..)
생성때부터 중복을 고려하는 방법 (32라인쯤에서 이전과 숫자가 같으면 다시 선택하지 않는 등으로)을 쓰는 방법이 있을 것 같습니다.
sls666 3년 전
43번줄의 sort(ans.begin(), ans.end()), 이 부분이 없으면 틀렸습니다가 나오는데, 제 생각으로는 없어도 되는 부분같습니다.
sort(nums.begin(), nums.end()); 처음 입력값을 정렬해주어서 결과도 오름차순처럼 출력될거같은데, 어떤 부분을 잘못 생각하고 있는 것인지 알고싶어 질문을 올립니다.
//결론: 43번라인이 없다면 왜 오류가 나는 것일까요?