[프로그래머스] 크레인 인형뽑기 게임 - JavaScript

이은빈 EUNBIN·2021년 1월 18일
0

📌 문제

https://programmers.co.kr/learn/courses/30/lessons/64061

📌 나의 풀이 (테스트 통과 실패)

function solution(board, moves) {
    let result = 0;
    let basket = [];
    
    // 1. board 배열 중 0 제거
    for(let i = 0; i < board.length; i++) {
        for(let j = board.length-1; j >= 0; j--) {
            if(board[i][j] === 0) {
                board[i].splice(j, 1);
            }
        }
    }
    
    // 2. 바구니에 인형 담기
    for(let k = 0; k < moves.length; k++) {
        let pickedDoll = board[moves[k]-1][(board[moves[k]-1]).length-1];
        
        if(board[moves[k]-1].length) { // 해당 번호에 인형이 있을 경우
            if(basket.length > 0 && basket[basket.length-1] === pickedDoll) {
                basket.pop();
                result += 2;
            }
            
            basket.push(pickedDoll);
            board[moves[k]-1].pop(); // 옮겨 담긴 인형은 board 배열에서 제거
        }
    }
  
    return result;
}

의사코드로 순서 정리해서 나름 잘 풀어나가고 있었다고 생각했다 (누가 그렇게 생각하래..)
"코드실행" 했을 때 테스트 케이스는 통과했는데
"제출 후 채점하기" 의 테스트 케이스에서는 처참히 다 실패..ㅎ..

조건문이 뭘 잘못한 것 같기도 하고
board 배열 중 0 을 제거한게 잘못된 거 같기도 하고

다른 분들 코드 참고해서 코드 다시 짜봐야겠다 🤧

📌 풀이

https://velog.io/@heumheum2/프로그래머스-2019-카카오-개발자-겨울-인턴십-크레인-인형뽑기JavaScript
https://jo-c.tistory.com/43

function solution(board, moves) {
    let result = 0;
    let temp = 0;
    let basket = [];
    
    for(let i = 0; i < moves.length; i++) {
        for(let j = 0; j < board.length; j++) {            
            if(board[j][moves[i]-1] !== 0) {
                if (temp === board[j][moves[i]-1]) {
                    result += 2;
                    if(basket.length > 0) {
                        basket.pop();
                        temp = basket[basket.length-1];
                    } else {
                        temp = 0;
                    }
                } else {
                    basket.push(board[j][moves[i]-1]);
                    temp = board[j][moves[i]-1];
                }
                board[j][moves[i]-1] = 0;
                break;
            }
        }
    }

    return result;
}

몇 시간을 계속 봐도 왜 이해가 안될까 했는데..
배열을 잘못 이해하고 있었다 😞🤯😵

[프로그래머스] 크레인 인형뽑기 게임 문제풀이 (Java)

여기에 그려두신 그림 보고 이해했다ㅠㅠㅠ
점점 화가 올라오고 있었는데 그래도 오늘 안에 이해해서 다행이다..흑

배열 실수 다시는 하지 말자 😭

profile
Frontend Engineer & Value Creator

0개의 댓글