본문 바로가기

Algorithm

[프로그래머스] 크레인 인형뽑기 with Javascript


크레인 인형뽑기

2019 카카오 개발자 겨울 인턴십

문제보기

 

제출답안

function solution(board, moves) {
    let answer = 0;
    const tmp = [];
    moves.forEach((v) => {
        for (let i = 0; i < board.length; i++) {
            if (board[i][v - 1]) {
                tmp.push(board[i][v - 1]);
                board[i][v - 1] = 0;
                break;
            }
        }
        if (tmp.length > 1) {
            if (tmp[tmp.length - 2] === tmp[tmp.length - 1]) {
                answer += 2;
                tmp.pop();
                tmp.pop();
            }
        }
    });
    return answer;
}

 

풀이

  1. answer - 사라진 인형의 개수, tmp - 인형 바구니
  2. moves 배열을 전체 탐색하는 forEach 반복문 실행  인형을 뽑기 위해 크레인 위치 이동하는 작업
  3. board의 길이만큼 범위를 가진 for 반복문 실행  각 층마다 인형이 있는지 확인하는 작업
    1. 크레인 위치(v - 1)에서 i층에 인형이 있는지 확인하는 조건문 실행
    2. 인형이 존재(0이 아닌 값이 확인)하면 인형 바구니(tmp)에 해당 인형(board[i][v - 1])을 보관(push)
    3. 인형을 꺼낸 자리는 0으로 변환하고, 반복문 종료(break)
  4. 크레인이 다음 위치로 이동하기 전에 인형 바구니(tmp)를 확인하는 조건문 실행
    1. 똑같은 인형이 2번 연속으로 보관되면 두 인형은 사라짐(pop 2번 실시)
    2. 사라진 인형의 개수(answer)에 2개 추가
  5. 크레인 작동이 마치고 answer 반환