자바스크립트(JavaScript)
function solution(board, moves) {
let result = 0;
let box = [];
let temp = 0;
for(let i = 0; i < moves.length; i++) {
for(let j = 0; j < board.length; j++){
if(board[j][moves[i] - 1] !== 0) {
if(board[j][moves[i] - 1] === temp) {
result += 2;
if(box.length > 0) {
box.pop();
temp = box[box.length - 1];
} else {
temp = 0;
}
} else {
box.push(board[j][moves[i] - 1]);
temp = board[j][moves[i] - 1];
}
board[j][moves[i] - 1] = 0;
break;
}
}
}
return result;
}
이중 for문을 사용하여 moves의 횟수만큼 i를 증가시키고 인형이 담겨있는 배열의 한열의 길이만큼 j를 증가시켜준다. 크레인이 집으러 내려간 열에 인형이 존재하고
그 인형이 내가 이전에 뽑은 인형과 동일하다면 인형이 터질 것이기 때문에 result에 +2를 해주고 box에 하나 이상의 인형이 들어있다면 box의 맨위에있는 인형이 터질 것이기 때문에 pop()으로 제거해준다. 그리고 남은 인형중 맨위에 있는 인형을 index값으로 찾을 것이기 때문에 box.length에 -1을 해준다.
if문의의 조건을 만족하지 않는 즉 box에 인형이 하나도 존재하지 않았다면?
box의 마지막 인형은 존재하지 않기 때문에 temp는 0이 될것이다.
크레인이 뽑은 인형이 box 맨위에 위치한 인형과 다른 종류라면? result는 그대로이고 box맨 위에 추가만 시켜주고 temp는 이번에 뽑은 인형이 될것이다.
어찌됬든 기존에 위치되어있던 인형은 뽑혀져 나왔기때문에 그 자리에는 인형이 없다는 뜻인 0으로 바꿔주고 2번째 for문을 탈출해준다. (이 부분이 이해가 가지않았었다..) 그리고 결과값을 return받는다.