프로그래머스 코딩 테스트 연습
문제
- https://programmers.co.kr/learn/courses/30/lessons/64061
- 문제 요약
- 인형뽑기 처럼 2차원 배열에서 뽑아서 스택 or ArrayList 에 쌓는다
- 스택 or ArrayList에 같은 숫자가 오면 삭제 된다.
- 총 삭제된 갯수 구하기
풀이
moves
가 어떤 숫자를 꺼내올지 결정 한다. ->moves
를 순서대로 꺼내오기 (for , while , map )- 꺼내 오면 (picked) 배열에 요소를 0 으로 바꿔주고 list 에 넣는다.
- list 의 크기가 0 보다 클때, 마지막 요소 (
pickedList[pickedList.length -1 ]
) 와 꺼내온 요소 (picked
) 가 같다면 마지막요소를 없애고 (pop
) 갯수를 +2 해준다. - 같지 않다면 , 꺼내온 요소 (
picked
)를 넣는다. (push
)
function solution(board, moves) {
var answer = 0;
let picked = 0;
let pickedList = [];
// moves!
for (var i = 0 ; i < moves.length ; i++){
// pick the num
picked = 0;
for (let j = 0 ; j < board.length ; j++){
if ( board[j][moves[i]-1] > 0){
picked = board[j][moves[i]-1];
board[j][moves[i]-1] = 0;
break;
}
}
console.log(picked);
if (picked == 0) continue;
if(pickedList.length == 0 && picked != 0){
pickedList.push(picked);
continue;
}
if(pickedList[pickedList.length -1 ] == picked){
pickedList.pop();
answer+=2;
}else{
pickedList.push(picked)
}
}
return answer;
}
소감
- 문제를 이해하는데 조금 시간이 걸렸지만 난이도가 높은 문제는 아니었다.