프로그래머스 - 크레인 인형뽑기

이윤주·2022년 3월 15일
0

코딩테스트

목록 보기
13/18

board =
[
[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]
] 이라면
=>
[
[ 0, 0, 0, 4, 3 ],
[ 0, 0, 2, 2, 5 ],
[ 0, 1, 5, 4, 1 ],
[ 0, 0, 0, 4, 3 ],
[ 0, 3, 1, 2, 1 ]
]

만든 후 각 array에서 0 제거
=>
stack =
[
[ 4, 3 ],
[ 2, 2, 5 ],
[ 1, 5, 4, 1 ],
[ 4, 3 ],
[ 3, 1, 2, 1 ]
]

뽑으려는 을 stack[moves[index] -1]의 0번째 index가 있다면 result에 push 후 쌓인 result의 마지막 index, 마지막 index - 1이 같다면 둘 제거 후 answer에 +2

function solution(board, moves) {
  let answer = 0;
  let stack = []; 
  let result = [];
  let size = board.length;
  let count = 0;

  while (count !== size) {
    let arr = [];
    board.forEach((doll) => {
      if (doll[count] !== 0) {
        arr.push(doll[count]);
      }
    });
    stack.push(arr);
    count++;
  }
    
  for (let i = 0; i < moves.length; i++) {
    if (stack[moves[i] - 1][0]) {
    // 뽑으려는 
      result.push(stack[moves[i] - 1][0]);
      stack[moves[i] - 1].shift();
      if (result[result.length - 1] === result[result.length - 2]) {
        answer += 2;
        result.splice(result.length - 2, 2);
      }
    }
  }

  return answer;
}

0개의 댓글

관련 채용 정보