본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다
자바스크립트 코드(나의 풀이)
let count = 0;
// 퀸의 위치가 괜찮은지 확인하는 함수
// row: 놓아진 퀸의 행
function check(board, row){
// 입력된 곳까지 이전 말의 열 위치 확인
for (let i = 0; i < row; i++) {
if (board[i] === board[row] ||( Math.abs(board[row] - board[i])) === (row - i)) {
return false;
}
}
return true;
}
// 퀸을 놓는 함수
// row: 놓아진 퀸의 행
function putQueen(board, row, n) {
// 주어진 n만큼 퀸이 놓여지면 횟수 세기
if (row === n) {
count += 1;
return;
} else {
// 퀸 놓기
// 각 행에 퀸 놓기
// i: 열변호
for (let i = 0; i < n; i++) {
board[row] = i;
// 해당 위치가 괜찮은지 확인
if (check(board, row)) {
putQueen(board, row + 1, n);
}
}
}
}
function solution(n) {
// 체스판을 표현하는 1차원 배열
// 0: 빈 칸
// index: 퀸이 놓인 행, value: 퀸이 놓인 열
const board = new Array(n).fill(0);
putQueen(board, 0, n);
return count;
}
Reference
'programming study > Algorithm' 카테고리의 다른 글
[프로그래머스] 숫자의 표현 - JavaScript 풀이 (0) | 2022.08.22 |
---|---|
[프로그래머스] n^2 배열 자르기 - JavaScript 풀이 (0) | 2022.08.22 |
[프로그래머스] 모음 사전 - JavaScript 풀이 (0) | 2022.08.22 |
[프로그래머스] 멀리 뛰기 - JavaScript 풀이 (0) | 2022.08.22 |
[프로그래머스] 뉴스 클러스터링 - JavaScript 풀이 (0) | 2022.08.22 |