ํ์ด ๋ฐฉ๋ฒ
๋์ฌ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํด 0์ ๋ฆฌํดํด์คฌ์ต๋๋ค
1. X๊ฐ O๋ณด๋ค ๋ง์ ๋
2. O๊ฐ X๋ณด๋ค 2๊ฐ์ด์ ๋ง์ ๋
3. ์ ๊ณต์ด ์ด๋ฏธ ์ด๊ฒผ๋๋ฐ ํ๊ณต์ด ์ด์ด์ ์งํํ ๊ฒฝ์ฐ
4. ํ๊ณต์ด ์ด๋ฏธ ์ด๊ฒผ๋๋ฐ ์ ๊ณต์ด ์ด์ด์ ์งํํ ๊ฒฝ์ฐ
์ด๊ธฐ๋ ๊ฒฝ์ฐ๋ฅผ ๋น๊ณ ๋ผ๊ณ ์ง์นญํ์ต๋๋ค
๊ฐ๋ก, ์ธ๋ก ๋น๊ณ ์ฌ๋ถ๋ฅผ ํ๋ณํ๋ ํจ์
๋๊ฐ์ ๋น๊ณ ์ฌ๋ถ๋ฅผ ํ๋ณํ๋ ํจ์๋ฅผ ๋ง๋ค์ด์ ํ์ฉํ์ต๋๋ค
function solution(board) {
// ๋์ฌ ์ ์๋ ๊ฒฝ์ฐ ๊ตฌํ๊ธฐ
//1. X๊ฐ O๋ณด๋ค ๋ง์ ๋
//2. O๊ฐ X๋ณด๋ค 2๊ฐ์ด์ ๋ง์ ๋
//3. ์ ๊ณต์ด ์ด๋ฏธ ์ด๊ฒผ๋๋ฐ ํ๊ณต์ด ์ด์ด์ ์งํํ ๊ฒฝ์ฐ
//4. ํ๊ณต์ด ์ด๋ฏธ ์ด๊ฒผ๋๋ฐ ์ ๊ณต์ด ์ด์ด์ ์งํํ ๊ฒฝ์ฐ
let o_cnt = 0;
let x_cnt = 0;
for (row of board) {
for (item of row) {
if (item === 'O') o_cnt++;
if (item === 'X') x_cnt++;
}
}
if (o_cnt < x_cnt || o_cnt - x_cnt > 1) return 0;
//๊ฐ๋ก ์ธ๋ก ๋น๊ณ ์ฐพ๊ธฐ
function row_col_bingo(check_type) {
for (let i = 0; i < 3; i++) {
let col_bingo = true;
let row_bingo = true;
const col_start = board[0][i];
const row_start = board[i][0];
//์ฒดํฌํ ํ์
๊ณผ ๊ฐ ํ๊ณผ ์ด์ ์์์ ์ด ๋ค๋ฅด๋ฉด false
if (col_start !== check_type) col_bingo = false;
if (row_start !== check_type) row_bingo = false;
//๊ฐ ํ๊ณผ ์ด์ ๊ฐ์ด ์ฒดํฌํ ํ์
๊ณผ ๋ค๋ฅด๋ฉด false
for (let j = 0; j < 3; j++) {
const col_item = board[j][i];
const row_item = board[i][j];
if (col_item !== col_start) col_bingo = false;
if (row_item !== row_start) row_bingo = false;
}
//ํ ์ค์ด๋ผ๋ ๋น๊ณ ๋ฉด true ๋ฐํ
if (col_bingo || row_bingo) return true;
}
return false;
}
//๋๊ฐ์ ๋น๊ณ ์ฐพ๊ธฐ
function check_diagonal_bingo(check_type) {
const center = board[1][1];
if (check_type !== center) return false;
//์ข์ฐ ๋๊ฐ์
if (board[0][0] === center && board[2][2] === center) return true;
//์ฐ์ข ๋๊ฐ์
if (board[0][2] === center && board[2][0] === center) return true;
return false;
}
//์ ๊ณต์ด ์ด๋ฏธ ์ด๊ฒผ๋๋ฐ ํ๊ณต์ด ์ด์ด์ ์งํํ ๊ฒฝ์ฐ
const is_o_row_col_bingo = row_col_bingo('O');
const is_o_diagnal_bingo = check_diagonal_bingo('O');
if ((is_o_row_col_bingo || is_o_diagnal_bingo) && o_cnt <= x_cnt) return 0;
//ํ๊ณต์ด ์ด๋ฏธ ์ด๊ฒผ๋๋ฐ ์ ๊ณต์ด ์ด์ด์ ์งํํ ๊ฒฝ์ฐ
const is_x_row_col_bingo = row_col_bingo('X');
const is_x_diagnal_bingo = check_diagonal_bingo('X');
if ((is_x_row_col_bingo || is_x_diagnal_bingo) && o_cnt !== x_cnt) return 0;
return 1;
}
'๐ง ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ํธํ ๋์ค JS (1) | 2024.01.05 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค]๋ฏธ๋ก ํ์ถ JS (2) | 2024.01.04 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋น๊ตฌ ์ฐ์ต JS (0) | 2024.01.03 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฆฌ์ฝ์ณ ๋ก๋ด JS (0) | 2024.01.03 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ณผ์ ์งํํ๊ธฐ JS (1) | 2024.01.03 |