크레인 인형뽑기
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;
}
풀이
- answer - 사라진 인형의 개수, tmp - 인형 바구니
- moves 배열을 전체 탐색하는 forEach 반복문 실행 → 인형을 뽑기 위해 크레인 위치 이동하는 작업
- board의 길이만큼 범위를 가진 for 반복문 실행 → 각 층마다 인형이 있는지 확인하는 작업
- 크레인 위치(v - 1)에서 i층에 인형이 있는지 확인하는 조건문 실행
- 인형이 존재(0이 아닌 값이 확인)하면 인형 바구니(tmp)에 해당 인형(board[i][v - 1])을 보관(push)
- 인형을 꺼낸 자리는 0으로 변환하고, 반복문 종료(break)
- 크레인이 다음 위치로 이동하기 전에 인형 바구니(tmp)를 확인하는 조건문 실행
- 똑같은 인형이 2번 연속으로 보관되면 두 인형은 사라짐(pop 2번 실시)
- 사라진 인형의 개수(answer)에 2개 추가
- 크레인 작동이 마치고 answer 반환
'Algorithm' 카테고리의 다른 글
[프로그래머스] 숫자 문자열과 영단어 with Javascript (0) | 2022.03.30 |
---|---|
[프로그래머스] 키패드 누르기 with Javascript (0) | 2022.03.26 |
[프로그래머스] 실패율 with Javascript (0) | 2021.12.21 |
[프로그래머스] 다트게임 with Javascript (0) | 2021.12.17 |
[프로그래머스] 비밀지도 with Javascript (0) | 2021.12.16 |