문제
게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 칸부터 인형이 순서대로 쌓이게 됩니다. 다음 그림은 [1번, 5번, 3번] 위치에서 순서대로 인형을 집어 올려 바구니에 담은 모습입니다.
문제 더보기
나의 풀이
function solution(board, moves) {
let basket = [];
let count = 0;
moves.forEach(e => {
for(let i = 0; i < board.length; i++) {
if(board[i][e-1]) {
let outDoll = board[i][e-1];
board[i][e-1] = 0;
if(outDoll === basket[basket.length -1]) {
basket.pop();
count += 2;
}
else basket.push(outDoll);
break;
}
}});
return count;;
}
풀이
function solution(board, moves) { // 0 1 2 3 4 // 예시 board = 0[0,0,0,0,0] // 1[0,0,1,0,3] // 2[0,2,5,0,1] // 3[4,2,4,4,2] // 4[3,5,1,3,1] // moves = [1,5,3,5,1,2,1,4] // moves[i] => board[j][i-1] 중 0이 아닌 값 제거/ 바구니 push // 바구니[i] = [i+1] => 둘 다 제거 / i -1 let basket = []; let count = 0; moves.forEach(e => { for(let i = 0; i < board.length; i++) { // 맨 위 인형 파악 (0이 아니면 다음 단계) if(board[i][e-1]) { // 변수: 꺼낸 인형 저장 let outDoll = board[i][e-1]; // 인형을 꺼내줌 board[i][e-1] = 0; // 꺼낸 인형이 바구니 맨 위 인형과 같다면 if(outDoll === basket[basket.length -1]) { // 바구니 맨 위 인형 제거 basket.pop(); // 터져서 사라진 인형 개수 +2 count += 2; } // 인형 중복 아니면 바구니에 넣기 else basket.push(outDoll); // 하나 꺼냈으면 다음으로 넘어감 break; } }}); return count;; }
정확도 테스트 결과
'Coding test' 카테고리의 다른 글
[프로그래머스] 비밀지도 (Level 1) - javascript (0) | 2022.05.02 |
---|---|
[프로그래머스] 실패율 (Level 1) - javascript (0) | 2022.04.29 |
[프로그래머스] 키패드 누르기 (Level 1) - javascript (0) | 2022.04.28 |
[프로그래머스] 신고 결과 받기 (Level 1) - javascript (0) | 2022.04.27 |
[프로그래머스] 예산 (Level 1) - javascript (0) | 2022.04.23 |