alsrl9   3년 전

N-Queen 문제에서 정답 처리됐지만 시간을 단축시키는 방법을 알고 싶어서 질문을 올립니다.

하나의 Row에 하나의 Queen만 들어갈 수 있다는 점을 이용해서

Queen을 자리에 놓으면 해당 Column의 Queen 이하로 모든 점과 왼쪽 아래 대각선, 오른쪽 아래 대각선을 탐색하며 Queen을 놓을 수 없게 처리했습니다.

모든 경우를 탐색하기 위해서 재귀적으로 처리하고 탐색 후에는 Queen을 놓기 전 상태로 되돌리는 방식을 선택했습니다.

여러 시도 끝에 불필요한 탐색을 줄여서 정답으로 처리되었지만 실행 시간이 2000ms를 넘습니다.

다른 분들은 1000ms 정도에 문제를 해결한 분도 더러 계신데 코드를 직접 봐도 이해하지 못하겠습니다.

어떤 점 때문에 이렇게 시간차이가 나는 걸까요?

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

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