프로그래머스
나의 풀이
수도코드
- board는 2차원 배열이고, 첫번째 인덱스는 층, 두 번째 인덱스는 라인을 의미한다.
- moves는 1차원 배열이고, 각 요소는 라인을 의미한다.
- basket 배열은 뽑힌 인형을 담는 배열이다.
- cnt는 터져서 사라진 인형의 개수이다.
- moves 값에 따라 board를 방문한다. (이중반복문)
- board의 값이 0보다 크고 basket의 마지막 요소와 board의 값이 일치한다면, basket 배열의 마지막 요소를 pop하고 cnt += 2 한다.
- board의 값이 0보다 크고 basket의 마지막 요소와 일치하지 않는다면, basket 배열에 push한다.
- board의 값을 0으로 만들어주고 내부 반복문을 끝낸다.
- cnt를 리턴한다.
function solution(board, moves) {
const floor = board.length;
const basket = [];
const cnt = 0;
for(let i=0; i<moves.length; i++){
for(let j=0; j<floor; j++){
if(board[j][moves[i]-1]>0){
if(basket[basket.length-1]===board[j][moves[i]-1]){
basket.pop();
cnt += 2;
}else{
basket.push(board[j][moves[i]-1);
break;
}
}
}
}
return cnt;
}