๋ฌธ์
์ธํ์ด ์๋ ์นธ์ ๋น์นธ์ด๋ค. ๋ชจ๋ ์ธํ์ 1 x 1 ํฌ๊ธฐ์ ๊ฒฉ์ ํ ์นธ์ ์ฐจ์ง, ๊ฒฉ์์ ๊ฐ์ฅ ์๋ ์นธ๋ถํฐ ์ฐจ๊ณก์ฐจ๊ณก ์์
์ฌ์ฉ์๋ ํฌ๋ ์ธ์ ์ข์ฐ๋ก ์์ง์ฌ์ ๋ฉ์ถ ์์น์์ ๊ฐ์ฅ ์์ ์๋ ์ธํ์ ์ง์ด์ฌ๋ฆด ์ ์๋ค.
์ง์ด์ฌ๋ฆฐ ์ธํ์ ๋ฐ๊ตฌ๋์ ์์ธ๋ค. ๋ฐ๊ตฌ๋์ ๊ฐ์ฅ ์๋ ์นธ๋ถํฐ ์ธํ์ด ์์๋๋ก ์์ด๊ฒ๋๋ค.
๊ฐ์ ๋ชจ์์ ์ธํ ๋ ๊ฐ๊ฐ ๋ฐ๊ตฌ๋์ ์ฐ์ํด์ ์์ด๊ฒ ๋๋ฉด ๋ ์ธํ์ ํฐ๋จ๋ ค์ง๋ฉด์ ๋ฐ๊ตฌ๋์์ ์ฌ๋ผ์ง๋ค.
์ธํ์ด ์๋ ๊ณณ์์ ํฌ๋ ์ธ์ ์๋์ํค๋ ๊ฒฝ์ฐ์๋ ์๋ฌด๋ฐ ์ผ๋ ์ผ์ด๋์ง ์๋๋ค.
ํ๋ฉด์ ๊ฒฉ์์ ์ํ๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด board
์ธํ์ ์ง๊ธฐ ์ํด ํฌ๋ ์ธ์ ์๋์ํจ ์์น๊ฐ ๋ด๊ธด ๋ฐฐ์ด moves
ํฌ๋ ์ธ์ ๋ชจ๋ ์๋์ํจ ํ ํฐํธ๋ ค์ ธ ์ฌ๋ผ์ง ์ธํ์ ๊ฐ์๋ฅผ return
[์ ํ์ฌํญ]
board ์ ๊ฐ ์นธ์ 0์ ๋น์นธ์ ๋ํ๋ธ๋ค.
1 ~ 100 ์ ์ซ์๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ธํ์ ๋ชจ์์ ์๋ฏธํ๋ฉฐ, ๊ฐ์ ์ซ์๋ ๊ฐ์ ๋ชจ์์ ์ธํ์ ๋ํ๋ธ๋ค.
์ฝ๋
stack์ด์ฉํด์ ํ ์ ์๋ ๋ฌธ์ ์๋ค.
const solution = (board, moves) => {
// 2์ฐจ์ ๋ฐฐ์ด์์ moves์ ์์๋๋ก ๊บผ๋ด์ ๋ฐฐ์ด์ ๋ด๋๋ค.
// ์ค๋ณต๋๋ ํ์ ๊ตฌํด์ ๋ฆฌํด
let answer = 0;
let basket = [];
for (let i = 0; i < moves.length; i++) {
let n = moves[i] - 1; //ํฌ๋ ์ธ ์์น n์ ๊ธฐ์ค์ผ๋ก ์ธ๋ก๊ธธ์ด๋งํผ ํ์
for (let j = 0; j < board.length; j++) {
// 0์ด ์๋ ์ซ์๋ฅผ ๊บผ๋ด์ basket ๋ฐฐ์ด์ ๋ด๋๋ค.
if (board[j][n] !== 0) {
if (basket[basket.length - 1] === board[j][n]) {
answer += 2;
basket.pop();
} else {
basket.push(board[j][n]);
}
board[j][n] = 0; // ๊บผ๋ธ ์๋ฆฌ 0์ผ๋ก ์ด๊ธฐํ
break; // ํด๋น ํ๊ฐ๋ง ๊บผ๋ด๊ธฐ ์ํด์ (for๋ฌธ ๋ฉ์ถ๊ธฐ)
}
}
}
return answer;
}
const board = [
[0, 0, 0, 0, 0],
[0, 0, 1, 0, 3],
[0, 2, 5, 0, 1],
[4, 2, 4, 4, 2],
[3, 5, 1, 3, 1]
];
const moves = [1, 5, 3, 5, 1, 2, 1, 4];
console.log(solution(board, moves));
'๐กAlgorithm > ๋ฌธ์ ํ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JS์๊ณ ๋ฆฌ์ฆ | ํ๋ก๊ทธ๋๋จธ์ค(Level 1) - ํ๊ท ๊ตฌํ๊ธฐ (0) | 2021.09.16 |
---|---|
JS์๊ณ ๋ฆฌ์ฆ | ํ๋ก๊ทธ๋๋จธ์ค(Level 1) - ์์๋ง๋ค๊ธฐ (0) | 2021.09.16 |
JS์๊ณ ๋ฆฌ์ฆ | ํ๋ก๊ทธ๋๋จธ์ค(Level 1) - ํคํจ๋ ๋๋ฅด๊ธฐ (0) | 2021.09.15 |
JS์๊ณ ๋ฆฌ์ฆ | ํ๋ก๊ทธ๋๋จธ์ค(Level 1) - ์์ฐ (0) | 2021.09.14 |
JS์๊ณ ๋ฆฌ์ฆ | ํ๋ก๊ทธ๋๋จธ์ค(Level 1) - 3์ง๋ฒ ๋ค์ง๊ธฐ (0) | 2021.09.14 |