문제 링크 : # 프로그래머스 2019 카카오 겨울인턴쉽 크레인 인형뽑기 게임
문제 설명 : 한마디로 말하면 moves 배열의 문자에 따라서 2차원 배열 board를 열로 집게가 접근을 해서 빼서 stack 형태로 담는데 만약에 아래 위로 같은 인형이 겹치게 된다면 사라지고 사라진 인형의 갯수를 리턴하는 함수.
function solution(board, moves) {
//걸러내는 함수
let basket = [];//-> stack 결과 배열
let count = 0;//-> 사라진 인형의 갯수
moves.forEach((ele) => {
const doll = pickUp(board, ele - 1);//-> 리턴받은 값을 다시 인형이라는 상자에 담음
if (doll && basket[basket.length - 1] === doll) //-> 만약에 인형과 스택의 마지막 인형이 같으면 마지막것을 버리고 카운터를 2개 추가한다.
{
basket.pop();
count += 2;
} else {
//-> 아닐경우 그냥 푸쉬
basket.push(doll);
}
});
//-> 값 리턴
return count;
}
function pickUp(board, index) {
//시작 - > 가져오는 행위부터 시작
for (let i = 0; i < board.length; i++) {//-> 2차원 배열을 반복
if (board[i][index] !== 0) {//-> 만약에 열로 접근한 집게가 0이 아닌 숫자를 만난다면
const doll = board[i][index]; //-> 그걸을 인형이라는 상자에 담음
board[i][index] = 0; //-> 그리고 그자리를 0으로 해놔야 중복이 안생김
return doll; //-> 함수 밖으로 리턴
}
}
}
회고: 처음에 함수 나누고 풀다가 잘안되서 다른 분들꺼 조금 참고 했다. 열심히 공부하자!!