본문 바로가기

Algorithm/Implementation

(Javascript) - 프로그래머스(2019 카카오 겨울 인턴) : 징검다리 답

반응형

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

구현하는 문제였습니다.

 

풀이방법

1. 인형을 뽑을 때의 위치(행)를 구한다.

2. 뽑은 인형을 배열에 담고 연속인지 판별해 상태를 갱신한다.

3. 답출력

Code

function getDollPos(board,oneMove){
    for(let i = 0; i < board[0].length; i++){
        if(board[i][oneMove]) return i;
    }
    return -1;
}

function updateDollState(doll){
    for(let i = 0; i < doll.length - 1; i++){
        if(doll[i] === doll[i+1] && doll[i]){
            doll.pop()
            doll.pop()
            return 1;
        }
    }
    return 0;   
}

function solution(board, moves) {
    let answer = 0;
    let doll = [];
    for(let i = 0; i < moves.length; i++){
        const pos = getDollPos(board,moves[i]-1);
        if(pos!==-1){
            doll.push(board[pos][moves[i]-1]);
            board[pos][moves[i]-1] = 0;
            if(updateDollState(doll)){
                answer += 2;
            }
        }
    }
    return answer;
}
console.log(solution([[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]))