2020년 1월 25일 복기 (TIL N- Queens)
(Y, x)
https://dreammarker.tistory.com/122
https://www.youtube.com/watch?v=QFKIl1AbqBI
블로그
https://velog.io/@wjdqls9362/JavaScript-TWIL-AlgorithmN-Rooks-N-Queens-2011.211.3
진짜 어렵다..
hasSlashConflictAt
hasAnySlashConflicts
https://velog.io/@hongin/%EC%9D%B8%EC%9E%90%ED%95%9C-%EA%B0%9C%EB%B0%9C%EB%A1%9C%EA%B7%B8Algorithm-back-tracking
// n * n의 판에 n개의 서로 공격하지 못하는 n개의 '룩'을 놓은 첫 번째 case를 리턴하는 함수
findNRooksSolution (n) {
// 1. n * n크기의 체스판 생성
// 2. 행 번호를 인자로 받는 재귀함수 생성
// 2-1. 행 번호가 n과 같아지면(행의 끝까지 말을 놓고 재귀된 것), !탈출!
// 2-2. 행에 대해 모든 열(index)을 도는 for loop 생성
// 2-2-1. 일단 말을 놓음
// 2-2-2. 놓고 나서, 어느 행과 열에도 충돌하는 말이 없다면, 행+1을 인자로 재귀
// 2-2-3. 충돌한다면, 말을 회수 (다음 열로 이동)
// 3. 재귀함수 실행(행 0부터)
// 4. 완성된 체스판을 배열형태로 return(메서드 이용)
};
// n * n의 판에 서로 공격하지 못하는 n개의 '룩'을 놓을 수 있는 모든 경우의 수의 count를 리턴하는 함수
countNRooksSolutions(n) {
// 1. n * n크기의 체스판 생성
// 2. 0부터 시작하는 count 생성
// 3. 행 번호를 인자로 받는 재귀함수 생성
// 3-1. 행 번호가 n과 같다면(행의 끝까지 말을 놓고 재귀된 것), count를 올리고, !탈출!
// 3-2. 행에 대해 모든 열(index)을 도는 for loop 생성
// 3-2-1. 일단 말을 놓음
// 3-2-2. 어느 행, 열에도 충돌하는 말이 없다면, 행+1을 인자로 재귀
// 3-2-3. 재귀에서 돌아오면, 말을 회수 (다음 열로 이동) --> 모든 case를 확인해야하므로!
// 4. 재귀함수 실행(행 0부터)
// 5. count를 return
};
// n * n의 판에 n개의 서로 공격하지 못하는 n개의 '퀸'을 놓은 첫 번째 case를 리턴하는 함수
findNQueensSolution(n) {
// 1. n * n크기의 체스판 생성
// 2. n이 0, 2, 3이면, 태초의 체스판 return (case 존재 X)
// 3. n이 1이면, 말 하나 놓고 체스판 return (case 딱 1개 존재)
// 4. 재귀함수 판단용 아무 값 없는 변수 solution 선언
// 5. 행을 인자로 받는 재귀함수 생성
// 5-1. 행 번호가 n과 같다면(행의 끝까지 말을 놓고 재귀된 것), solution에 체스판을 할당하고, !탈출!
// 5-2. 행에 대해 모든 열(index)을 도는 for loop 생성
// 5-2-1. 일단 말을 놓음
// 5-2-2. 어느 행, 열, 슬래쉬, 백슬래쉬에도 충돌하는 말이 없다면, 행+1을 인자로 재귀
// 5-2-3. 재귀에서 돌아온 후, (검사) solution에 case가 할당되어있다면, 그대로 stop
// 5-2-4. 아니라면, 말을 회수 (다음 열로 이동)
// 6. 재귀함수 실행(행 0부터)
// 7. 완성된 체스판을 배열형태로 return(메서드 이용)
};
// n * n의 판에 서로 공격하지 못하는 n개의'퀸'을 놓을 수 있는 모든 경우의 수의 count를 리턴하는 함수
countNQueensSolutions(n) {
// 1. n * n크기의 체스판 생성
// 2. 0부터 시작하는 count 생성
// 3. 행을 인자로 받는 재귀함수 생성
// 3-1. 행 번호가 n과 같다면(행의 끝까지 말을 놓고 재귀된 것), count를 올리고, !탈출!
// 3-2. 행에 대해 모든 열(index)을 도는 for loop 생성
// 3-2-1. 일단 말을 놓음
// 3-2-2. 어느 행, 열, 슬래쉬, 백슬래쉬에도 충돌하는 말이 없다면, 행+1을 인자로 재귀
// 3-2-3. 재귀에서 돌아오면 말을 회수 (다음 열로 이동)
// 4. 재귀함수 실행(행 0부터)
// 5. count를 return
};
봐도 이해 안된다 하루종일 해도
안된다
유투브를 보자 그냥
https://www.youtube.com/watch?v=IY8uVrt_jlM
우리의 친구 유투브
다행이도 난
Author And Source
이 문제에 관하여(2020년 1월 25일 복기 (TIL N- Queens)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jtlim0414/2020년-1월-25일-복기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)