jhim000   4년 전

제가 접근한 방식은 공백 위치를 empty_place라는 deque에 담고, 그 크기만큼 permutation이라는 int형 배열을 만들어서 permutation[0] = 1; permutation[1] = 1; permutation[2] = 1; 이렇게 할당하고, 나머지는 전부 0으로 할당했습니다. 그 후 do~while(next_permutation(permutation, permutation+zero_cnt)) 문으로 1의 위치를 바뀌게 하여 조합을 해결하려 했는데, 결과적으로 총 35C3번 do~while문이 돌아가야 하는데, 저는 한번만 돌아갑니다.

알려주시면 감사하겠습니다ㅠ

djm03178   4년 전

1 1 1 0 0 0 0 ...은 사전순으로 가장 마지막의 모습이기 때문에 여기서 next_permutation이 호출되면 false가 반환됩니다.

jhim000   4년 전

감사합니다. 그 부분은 0 0 0 0 0 0 0 1 1 1로 바꿔주니 해결되었습니다!

근데 여전히 프로그램 작동 로직은 맞다고 생각하는데 정답은 안나옵니다.. 

이런 경우에는 어떻게 해결해나갈까요.. ㅠ

djm03178   4년 전

한 번 루프를 돌 때마다 v의 모든 원소를 다 pop했기 때문에 v의 크기는 0이 되고, 그래서 43번째 줄처럼 단순히 인덱스로 접근하면 안 됩니다. 다시 push_back을 해줘야 합니다.

jhim000   4년 전

감사합니다ㅠ

그 문제 때문인줄은 몰랐습니다..

전에도 계속 안됬는데, 이 문제였네요;;

마지막에 for 문으로 v에 push 하니깐 해결되었습니다.


댓글을 작성하려면 로그인해야 합니다.