Algorithm
[Programmers] 크레인 인형뽑기 게임 (JavaScript)
제로콜라먹는사람
2022. 5. 7. 12:10
반응형
문제 설명
게임화면인 2차원 배열과 크레인을 작동시킨 위치 배열이 주어졌을 경우 동일한 2개의 인형이 이웃하여 터진 모든 인형의 수를 구하는 문제
풀이과정 ✨
[stack, for ... of]
- 뽑은 인형들이 들어갈 stack 자료구조의
basket
생성 - index를 이용하여 답을 도춣해낼 것이기 때문에 첫번째 요소가 0인
moveIndexList
를 새롭게 생성 - 2중 for ... of 문을 사용하여 행으로 구분된 전체 배열 `board 를 탐색함
item
(뽑기로 뽑은 아이템)이 존재할 때 해당 아이템이basket
의 마지막 아이템과 일치한다면basket.pop()
해주고answer
에 터진 아이템 개수를 더해줌- 그렇지 않다면 basket의 마지막 요소로 push해줌
- 마지막으로 뽑은 자리의 인형번호를 0으로 재할당해줌
Code
function solution(board, moves) {
let answer = 0;
const basket = [];
const moveIndexList = moves.map(num => num - 1);
for(let moveIndex of moveIndexList) {
for(let row of board) {
const item = row[moveIndex];
if(!!item) {
if(item === basket[basket.length - 1]) {
basket.pop()
answer += 2
} else {
basket.push(item)
}
row[moveIndex] = 0
break
}
}
}
return answer
}
시간 복잡도 O(n^2)
반응형