diff --git "a/nnevia/8\354\243\274\354\260\250/240514/n-queen.js" "b/nnevia/8\354\243\274\354\260\250/240514/n-queen.js" new file mode 100644 index 0000000..4eeadf6 --- /dev/null +++ "b/nnevia/8\354\243\274\354\260\250/240514/n-queen.js" @@ -0,0 +1,43 @@ +// gpt 사용 +function check(queen, row) { + for (let i = 0; i < row; i += 1){} + function isSafe(row, col) { + // 동일 행의 상단 열을 확인합니다. + for (let i = 0; i < col; i++) { + if (board[row][i] === 'Q') return false; + } + + // 좌상단 대각선을 확인합니다. + for (let i = row, j = col; i >= 0 && j >= 0; i--, j--) { + if (board[i][j] === 'Q') return false; + } + + // 좌하단 대각선을 확인합니다. + for (let i = row, j = col; i < n && j >= 0; i++, j--) { + if (board[i][j] === 'Q') return false; + } + + return true; + } + + function backtrack(col) { + if (col === n) { + // 모든 퀸이 성공적으로 배치되면 + const solution = board.map(row => row.join('')); + result.push(solution); + return; + } + + for (let i = 0; i < n; i++) { + if (isSafe(i, col)) { + board[i][col] = 'Q'; // 퀸을 배치합니다. + backtrack(col + 1); // 다음 열로 이동합니다. + board[i][col] = '.'; // 백트래킹합니다. + } + } + } + +function solution(n) { + return search(Array.from({length: n}, () => 0), 0); +} +} \ No newline at end of file diff --git "a/nnevia/8\354\243\274\354\260\250/240516/\354\202\274\354\264\235\354\202\254.js" "b/nnevia/8\354\243\274\354\260\250/240516/\354\202\274\354\264\235\354\202\254.js" new file mode 100644 index 0000000..f1ae29b --- /dev/null +++ "b/nnevia/8\354\243\274\354\260\250/240516/\354\202\274\354\264\235\354\202\254.js" @@ -0,0 +1,38 @@ +// 1차 풀이 +function solution(number) { + let answer = 0; + for (let i = 0; i < number.length - 2; i++) { + for (let j = i + 1; j < number.length - 1; j++) { + for (let k = j + 1; k < number.length; k++) { + if (number[i] + number[j] + number[k] === 0) { + answer++; + } + } + } + } + return answer; +} + + +// 2차풀이 백트래킹 사용 (구글) +// const NUM = 3; + +// function solution(number) { +// let ans = 0; +// const tmp = []; +// const backtrack = (cur) => { +// if(tmp.length === NUM){ +// ans += tmp.reduce((a, b) => a + b) ? 0 : 1; +// return; +// } + +// for(let i = cur; i < number.length; i++){ +// tmp.push(number[i]); +// backtrack(i + 1); +// tmp.pop(); +// } +// } + +// backtrack(0); +// return ans; +// } \ No newline at end of file