๋ฐ์ํ
๋ฌธ์
- ์์ฌ์๋ค → ์คํ
๋์ ํ์ด
function solution(board, moves) {
let answer = 0;
const size = board.length;
const basket = [];
let picked = -1;
for(const move of moves) {
for(let i = 0; i < size; i++) {
if(board[i][move - 1] === 0) continue;
else {
picked = board[i][move - 1];
board[i][move - 1] = 0;
if(basket[basket.length - 1] === picked) {
basket.pop();
answer = answer += 2;
} else {
basket.push(picked);
}
break;
}
}
}
return answer;
}
๊ฐ ๋์๋ง๋ค ๋ณด๋์ ํด๋น ์ด์ ์์์๋ถํฐ ์์ฐจ์ ์ผ๋ก ํ์ํด ์ธํ์ ์ฐพ๊ณ , ์ฐพ์ ์ธํ์ ๋ฐ๊ตฌ๋(basket
)์ ๋ฃ์ต๋๋ค. ๋ง์ฝ ๋ฐ๊ตฌ๋์ ๋ง์ง๋ง ์ธํ๊ณผ ์๋ก ๋ฃ์ ์ธํ์ด ๊ฐ์ผ๋ฉด ๋ฐ๊ตฌ๋์์ ์ ๊ฑฐํ๊ณ , ์ ๊ฑฐ๋ ์ธํ์ ๊ฐ์๋ฅผ answer
์ 2์ฉ ๋ํฉ๋๋ค.
๋ฌธ์ ์
- ๋ณด๋์ ํด๋น ์ด์ ์์์๋ถํฐ ์์ฐจ์ ์ผ๋ก ํ์ํ๋ ๊ณผ์ ์ด ์ค๋ณตํด์ ๋ฐ์ → ๋ณด๋๋ฅผ ์คํ์ผ๋ก ๊ตฌํํ๋ฉด ํด๊ฒฐ ๊ฐ๋ฅ
๋ค๋ฅธ ํ์ด
function solution(board, moves) {
// โ ๊ฐ ์ด์ ๋ํ ์คํ์ ์์ฑํฉ๋๋ค. [[], [], [], [], []]
const lanes = [...new Array(board[0].length)].map(() => []);
// โ board๋ฅผ ์ญ์์ผ๋ก ํ์ํ๋ฉฐ, ๊ฐ ์ด์ ์ธํ์ lanes์ ์ถ๊ฐํฉ๋๋ค.
for (let i = board.length - 1; i >= 0; i--) {
for (let j = 0; j < board[0].length; j++) {
if (board[i][j]) {
lanes[j].push(board[i][j]);
}
}
}
// โ ์ธํ์ ๋ด์ bucket์ ์์ฑํฉ๋๋ค.
const bucket = [];
// โ ์ฌ๋ผ์ง ์ธํ์ ์ด ๊ฐ์๋ฅผ ์ ์ฅํ ๋ณ์๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
let answer = 0;
// โ moves๋ฅผ ์ํํ๋ฉฐ, ๊ฐ ์ด์์ ์ธํ์ ๋ฝ์ bucket์ ์ถ๊ฐํฉ๋๋ค.
for (const m of moves) {
if (lanes[m - 1].length > 0) {
// ํด๋น ์ด์ ์ธํ์ด ์๋ ๊ฒฝ์ฐ
const doll = lanes[m - 1].pop();
if (bucket.length > 0 && bucket[bucket.length - 1] === doll) {
// โ ๋ฐ๊ตฌ๋์ ์ธํ์ด ์๊ณ , ๊ฐ์ฅ ์์ ์๋ ์ธํ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ
bucket.pop();
answer += 2;
} else {
// โ ๋ฐ๊ตฌ๋์ ์ธํ์ด ์๊ฑฐ๋, ๊ฐ์ฅ ์์ ์๋ ์ธํ๊ณผ ๋ค๋ฅธ ๊ฒฝ์ฐ
bucket.push(doll);
}
}
}
return answer;
}
Reference
๋ฐ์ํ
'๐ข Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript][๋ฐฑ์ค] 1158๋ฒ - ์์ธํธ์ค ๋ฌธ์ (0) | 2024.08.15 |
---|---|
[Javascript][Programmers] ํ ํธ์ง - 2021 ์นด์นด์ค ์ฑ์ฉ์ฐ๊ณํ ์ธํด์ญ (0) | 2024.08.09 |
[Javascript][Programmers] ์ฃผ์ ๊ฐ๊ฒฉ (0) | 2024.08.03 |
[Javascript][Programmers] ๊ดํธ ํ์ ํ๊ธฐ (0) | 2024.08.01 |
[Javascript][Programmers] ๋ฐฉ๋ฌธ ๊ธธ์ด (0) | 2024.07.30 |