알고리즘 발자취/코딩테스트 자바스크립트 버전
[Lv1 코딩테스트 연습] 크레인 인형뽑기 게임
까연
2021. 7. 14. 23:29
https://programmers.co.kr/learn/courses/30/lessons/64061
코딩테스트 연습 - 크레인 인형뽑기 게임
[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4
programmers.co.kr
나의 풀이
function solution(board, moves) {
let answer = 0
let basket = []
for(let i=0; i<moves.length; i++) {
let move = moves[i] - 1
let j=0
while(j < board[0].length && board[j][move] === 0 ) {
j++
}
if(j < board[0].length) {
if(basket.length) {
let latestItem = basket.pop()
if(latestItem === board[j][move]) {
answer += 2
} else {
basket.push(latestItem)
basket.push(board[j][move])
}
} else {
basket.push(board[j][move])
}
board[j][move] = 0
}
}
return answer
}
변수
- board: 인형뽑기 판 (N*N 2차원 배열)
- moves: 크레인이 이동한 위치 배열
- answer: 사라진 인형의 개수
- basket: 뽑은 인형을 담을 바구니 (스택)
설명
: 인형뽑기 기계는 2차원 배열이고 작동시킨 위치 move의 값이 기계의 열 값이다.
인형을 담는 바구니는 먼저 쌓인 인형이 아래로 가는 스택 구조로 된 바구니이다. 가장 마지막에 쌓인 인형과 현재 인형을 비교하여 같을 경우 인형을 제거하도록 하였다.
바구니에 인형을 담을 땐 push() 함수를 사용하고, 가장 마지막의 인형을 꺼낼 땐 pop() 함수를 사용했다.