๋ฌธ์ ๐ฝ
https://school.programmers.co.kr/learn/courses/30/lessons/64061
๋ค๋ฅธ์ฌ๋ ํ์ด ๐ฝ
function solution(board, moves) {
var count =0;
var stack = [];
for(var i=0;i<moves.length;i++){
var now = moves[i]-1
for(var j=0;j<board.length;j++){
if(board[j][now]!=0){
if(stack[stack.length-1]===board[j][now]){
stack.pop();
count+=2;
}
else{
stack.push(board[j][now])
}
board[j][now] = 0;
break;
}
}
}
console.log(stack)
return count
}
๋ดํ์ด๐ฝ
1. ์ฑ๊ณต โญ
function solution(board, moves) {
var answer = 0;
let stack=[]
let n = board.length
// 2์ฐจ์ ๋ฐฐ์ด ๊น์๋ณต์ฌ
let newBoard = board.map((val)=>{return [...val]})
for(let i=0; i<n; i++){
for(let j=0; j<n; j++){
newBoard[i][j]=board[(n-1)-j][i]
}
}
// 0์ ๋ชจ๋ ์์ฐ
newBoard.forEach((arr,index)=>{
newBoard[index]=arr.filter((ele)=>{return ele!==0})
})
// stack์ ์ธํ๋ค์ ์์๋๋ก ์์๋ฃ์
moves.forEach((val)=>{
let poppedDoll=newBoard[val-1].pop();
if(poppedDoll){
stack.push(poppedDoll);
if(stack[stack.length-2]===stack[stack.length-1]){
stack.pop()
stack.pop()
answer+=2;
}
}
})
return answer;
}
๋๋์ ๐ฝ
๋ฌธ์ ๋ฅผ ์๋ชป ์ฝ์ด์ ํผ๋์ค๋ฌ์ด ์๊ฐ์ ๋ง์ด ๋ณด๋๋ค.
๊ทธ ์ดํ์ 2์ฐจ์๋ฐฐ์ด์ ๊น์ ๋ณต์ฌ์์ ์ค์๋ฅผ ํด์ ๋ ์ ์๋๋์ง ์๊ฐ์ ํ๋นํ๋ค..
์ฐ์ฌ๊ณก์ ๋์ ๊ฒฐ๊ตญ ๋ฌธ์ ๋ฅผ ํ์๋ค.
๋ค๋ฅธ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๋ ๊ตณ์ด ๋ฐฐ์ด์ ๊ฐ๋ก์ธ๋ก๋ฅผ ์๋ฐ๊พธ๊ณ ํ์ด์ ์ ๊ธฐํ๋ค.
๋ค์ํ๋ฒ ๋ณต๊ธฐํ์๋ฉด ๋ฐฐ์ด์ด 1์ฐจ์์ผ๋๋
let newArr = oldArr.slice() >> slice()๋ฅผ ์ด์ฉํ์ฌ 1์ฐจ์ ๊น์ ๋ณต์ฌ
2์ฐจ์ ์ผ๋ ๊น์๋ณต์ฌ๋
let newArr = oldArr.map((val)=>{ return [...val] }) ๋๋
let newArr = oldArr.map((val)=>{ return val.slice() } ๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.