DevYoon
[ํ๋ก๊ทธ๋๋จธ์ค] ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์ (Javascript) ๋ณธ๋ฌธ
[ํ๋ก๊ทธ๋๋จธ์ค] ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์ (Javascript)
gimewn 2022. 9. 21. 00:01link ๐ https://school.programmers.co.kr/learn/courses/30/lessons/64061?language=javascript
๐งธ ์ธํ์ ํฌ๋ ์ธ์์ ๋ฝ์์ฃผ๊ณ , ๋ฐ๊ตฌ๋์ ๋ง์ง๋ง ์์์ ๊ฒ์ฌํ์ฌ ์ญ์ ํด์ฃผ๋ ์์ผ๋ก ๋ก์ง์ ์คํํ์๋ค.
๐งธ ์ธํ์ ๋ฝ๋ ๊ฒฝ์ฐ, ์ด์ 0๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ ๊ฒ์ฌํ์ฌ 0์ด ์๋ ์๊ฐ ๋์ค๋ฉด ๋งจ ์์ ์ธํ์ด๋ฏ๋ก ๊ทธ ๊ฐ์ return ํด์ค๋ค
๐งธ ๊ทธ ํ ๋ฐ๊ตฌ๋ ๊ฒ์ฌ ํจ์๋ก ๊ฐ์ ๋ฃ์ด์ฃผ์ด ๋ง์ง๋ง ์์์ ๋น๊ต, ๊ฐ์ผ๋ฉด ๋ง์ง๋ง ์์๋ฅผ ์ญ์ , ๊ฐ์ง ์์ผ๋ฉด ๋ฝ์ ์ธํ์ ๋ฐ๊ตฌ๋์ ๋ฃ์ด์ฃผ์๋ค.
๐งธ ๋จ, ๋ฐฐ์ด์ด ๋น ๋ฐฐ์ด์ผ ๊ฒฝ์ฐ ๋น๊ตํ ๋์์ด ์์ผ๋ฏ๋ก ๋ฌด์กฐ๊ฑด ๋ฐ๊ตฌ๋์ ๋ฃ์ด์ค๋ค.
function solution(board, moves) {
var answer = 0;
let len = board.length;
let basket = [];
function crain(col){
for (let row = 0; row<len; row++){
// ์ด์ 0์ด ์๋ ์ต์ด์ ๊ฐ => ๋งจ ์์ ์๋ ์ธํ
if(board[row][col] !== 0){
let tmp = board[row][col];
// ๋ฝ์์ผ๋๊น 0์ผ๋ก ์ด๊ธฐํ
board[row][col] = 0;
return tmp
}
}
}
function removeDoll(doll){
// basket์ด ๋น ๋ฐฐ์ด์ด๋ฉด ๋น๊ตํ ๋์ ์์ผ๋ฏ๋ก
if(!basket){
// ๊ทธ๋ฅ ๋ฃ์ด์ค
basket.push(doll)
}else{
// ๋ง์ง๋ง ์ธ๋ฑ์ค ๊ณ์ฐ
let bask_len = basket.length-1;
// ๋ง์ง๋ง ์์๊ฐ ์๋ก ๋ฝ์ ์ธํ๊ณผ ๋์ผํ๋ค๋ฉด
if(basket[bask_len] === doll){
// ๋ง์ง๋ง ์์ ์ญ์
basket.pop();
// answer์ 2 ๋ํด์ฃผ๊ธฐ
answer += 2;
}else{
// ๊ฐ์ง ์์ผ๋ฉด ๋ฐฐ์ด์ ์๋ก ๋ฝ์ ์ธํ ๋ฃ์ด์ฃผ๊ธฐ
basket.push(doll)
}
}
}
// moves ๋ฐฐ์ด ์ํํ๋ฉด์ ์ธํ ๋ฝ๊ณ => ๋ฐ๊ตฌ๋ ๊ฒ์ฌ ์คํ
moves.forEach((seq) => {
let ans = crain(seq-1);
// ์ธํ์ ๋ฝ์๋ค๋ฉด (undefined๊ฐ ์๋๋ผ๋ฉด)
if(ans){
// ๋ฐ๊ตฌ๋ ๊ฒ์ฌ
removeDoll(ans)
}
})
return answer;
}