[알고리즘] 프로그래머스 - 크레인 인형뽑기 게임
https://programmers.co.kr/learn/courses/30/lessons/64061
문제설명
게임 화면의 격자의 상태가 담긴 2차원 배열 board와 인형을 집기 위해 크레인을 작동시킨 위치가 담긴 배열 moves가 매개변수로 주어질 때, 크레인을 모두 작동시킨 후 터트려져 사라진 인형의 개수를 return 하도록 solution 함수를 완성해주세요.
이 문제는 작동하는 그림을 봐야 이해가 되므로 저 링크로 들어가서 문제를 한번 읽어보기 바랍니다.
제한사항
- board 배열은 2차원 배열로 크기는 5 x 5 이상 30 x 30 이하입니다.
- board의 각 칸에는 0 이상 100 이하인 정수가 담겨있습니다.
- 0은 빈 칸을 나타냅니다.
- 1 ~ 100의 각 숫자는 각기 다른 인형의 모양을 의미하며 같은 숫자는 같은 모양의 인형을 나타냅니다.
- moves 배열의 크기는 1 이상 1,000 이하입니다.
- moves 배열 각 원소들의 값은 1 이상이며 board 배열의 가로 크기 이하인 자연수입니다.
입출력 예
해결방법
코드에 적어두겠음
function solution(board, moves) {
let stack =[]; // 크레인으로 옮긴 인형을 담을 stack
let count=0; // 터트려진 인형 개수를 담을 변수
//외부 for문은 moves의 순서대로 작동해야하기때문에 moves의 길이만큼 순회함
for(let i = 0; i < moves.length; i++){
// 각 i에 대해 board에서 값을 찾아준다
for(let j = 0; j < board.length; j++){
// 탐색 대상이 되는 column에 인형이 있는지 확인
if(board[j][moves[i]-1]){
// 스택의 끝 값과 스택에 새로 넣을 값이 같을때는 두개 모두 터트리기
if(stack.length && stack[stack.length-1]===board[j][moves[i]-1]){
stack.pop();
count+=2;
}else{
//새로넣을값과 스택의 끝 값이 같지않으면 스택에 값 넣어주기
stack.push(board[j][moves[i]-1]);
}
board[j][moves[i]-1] = 0;
break;
}
}
}
return count;
}
Author And Source
이 문제에 관하여([알고리즘] 프로그래머스 - 크레인 인형뽑기 게임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dolarge/알고리즘-프로그래머스-크레인-인형뽑기-게임저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)