프로그래머스 : 2019 카카오 개발자 겨울 인턴십 크레인 인형뽑기 게임

KHW·2021년 6월 23일
0

알고리즘

목록 보기
30/37

문제
100/100
40분

기본적인 내용

위치마다 뽑아서 stack에 쌓고 같은 것이면 스택에서 둘다 제거 하고 전부 진행 후 제거한 갯수 리턴

처음 코드

function solution(board, moves) {
    let stack = [];
    let count=0;
    moves.map(val=>{
        let value
        for(let i=0;i<board.length;i++)
            {
                if(board[i][val-1] != 0){
                    value = board[i][val-1]
                    board[i][val-1] = 0;
                    break;
                }
            }
        if(value == stack[stack.length-1]) {stack.pop(); count++;}
        else if(value != stack[stack.length-1] && value) stack.push(value);
    })
    return count*2;
}

이때 2개의 오류가 있었다.

  • value == stack[stack.length-1] 에서 undefined와 undefined는 true이다.

  • 즉 , value에 기본적으로 값 자체는 존재해야 이런 것을 막을 수 있다.

수정한코드

function solution(board, moves) {
    let stack = [];
    let count=0;
    moves.map(val=>{
        let value = 0;
        for(let i=0;i<board.length;i++)
            {
                if(board[i][val-1] != 0){
                    value = board[i][val-1]
                    board[i][val-1] = 0;
                    break;
                }
            }
        if(value == stack[stack.length-1]) {stack.pop(); count++;}
        else if(value != stack[stack.length-1] && value) stack.push(value);
    })
    return count*2;
}
profile
나의 하루를 가능한 기억하고 즐기고 후회하지말자

0개의 댓글