예전에 파이썬으로만 알고리즘 문제를 풀어왔는데, 앞으로 자바스크립트로 풀어볼 생각이다. 먼저 풀었던 문제들을 자바스크립트로 다시 풀어본다.
유명한 카카오 문제이다.
뽑은 인형이 중복되면 사라지며, 사라진 인형의 갯수를 구하는 문제이다.
이차원 배열과 스택을 이용하여 풀면 된다.
스택이란?
스택은 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 자료구조이다. 항아리를 생각해보면 쉽게 이해할 수 있다.
스택의 연산에서는 pop(), push()를 사용하면 된다.
나는 이번 문제에 위의 2가지를 사용해 풀어볼 예정이다.
function solution(board, moves) {
let bascket = [];
let answer = 0;
for(let i = 0; i < moves.length; i++) {
const move = moves[i] - 1; // 인덱스 값을 사용하기 위해 -1 해준다.
for(let j = 0; j < board.length; j++) {
const doll = board[j][move];
if(doll) {
board[j][move] = 0; // 인형이 있으면 뽑고난 후 0으로 처리해 빈 곳을 표시해준다.
if(bascket.length !== 0 && bascket[bascket.length-1] === doll) {
//바구니에 인형이 있을 때, 바구니에 담긴 인형과 뽑은 인형이 같을 경우
bascket.pop();
answer += 2; // 인형은 사라지며 사라진 인형은 2개가 된다.
} else {
bascket.push(doll); // 인형이 서로 다를 경우, 바구니에 뽑은 인형을 넣어준다.
}
break;
};
};
}
return answer;
}
파이썬으로 풀다 자바스크립트로 풀어보니, 조금 더 복잡?한 것 같지만 재미는 더 있다!
이차원 배열과 스택만을 사용하여 인형뽑기 게임을 구현할 수 있다는 게 새롭고 신기했다.
어려울 거라고만 생각한 나 자신을 반성하며, 어려워 보여도 쉽게 풀 수 있는 문제들이 많다는 것을 느끼게 되는 문제였다.
무엇보다 이렇게 재밌는 문제를 만들어 제출한 분에게 존경의 박수를 보내며...