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

우리의 친구 유투브

다행이도 난

https://backbonejs.org/

좋은 웹페이지 즐겨찾기