개발관련/백준
백준 node.js 9663번 N-Queen 백트래킹 JavaScript JS
kku_lurgi
2023. 6. 30. 11:14
9663번: N-Queen
N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
N-Queen문제 풀이
복습차원에서 적습니다.
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim()
const N = +input;
let answer = 0;
next(0, Array(N).fill(0))
console.log(answer)
function next(row,board) {
if(row === N){
answer++
return
}
for(let i=0; i<N; i++){
if(check(board,i, row)){
const newBoard = [...board]
newBoard[row] = i
next(row+1,newBoard)
}
}
}
function check(board , col, row){
for(let i=0; i<row; i++){
const num = board[i]
const sub = row-i
if(num === col || num+sub === col || num-sub === col){
return false
}
}
return true
}
반응형