알고리즘/test

javascript) 프로그래머스 - 크레인 인형뽑기 게임

이경찬 :) 2023. 2. 20. 12:29

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

실행코드

function solution(board, moves) {
    const pickedDolls = [];
    let score = 0;
    moves.forEach(order => {
        const doll = pickup(board, order - 1);
        if (doll) {
            if (pickedDolls[pickedDolls.length - 1] === doll) {
                pickedDolls.pop();
                score += 2;
            } else {
                pickedDolls.push(doll);
            }
        }
    });
    return score;
}

function pickup(board, order) {
    for (let i = 0; i < board.length; i++) {
        if (board[i][order] !== 0) {
            const [doll, rowIndex] = [board[i][order], i];
            board[rowIndex][order] = 0;
            return doll;
        }
    }
    return null;
}

풀이

pickup함수는 board와 order를 받아서 board의 order-1와 맞는 인자가 0이 아니면 그 해당인자를 doll로 return 해주고 board의 해당 요소를 0으로 바꿔서 인형을 뽑도록 해준다.

 

solution에서 만약 return한 doll과 가장 오른쪽의 요소와 같으면 score를 +2해주고 pickedDolls의 맨 오른쪽 요소를 pop해준다. else일 경우 doll을 배열에 push해준다.