[Lv1] 크레인 인형뽑기 게임

Creating the dots·2021년 12월 27일
0

Algorithm

목록 보기
39/65

프로그래머스

나의 풀이

수도코드

  • board는 2차원 배열이고, 첫번째 인덱스는 층, 두 번째 인덱스는 라인을 의미한다.
  • moves는 1차원 배열이고, 각 요소는 라인을 의미한다.
  • basket 배열은 뽑힌 인형을 담는 배열이다.
  • cnt는 터져서 사라진 인형의 개수이다.
  • moves 값에 따라 board를 방문한다. (이중반복문)
    • board의 값이 0보다 크고 basket의 마지막 요소와 board의 값이 일치한다면, basket 배열의 마지막 요소를 pop하고 cnt += 2 한다.
    • board의 값이 0보다 크고 basket의 마지막 요소와 일치하지 않는다면, basket 배열에 push한다.
    • board의 값을 0으로 만들어주고 내부 반복문을 끝낸다.
  • cnt를 리턴한다.
function solution(board, moves) {
  const floor = board.length; //층 개수이자 라인 개수 (단, 개수이므로 인덱스로 활용할 땐, -1해주어야함)
  const basket = []; 
  const cnt = 0;
  
  for(let i=0; i<moves.length; i++){
    for(let j=0; j<floor; j++){
      if(board[j][moves[i]-1]>0){
        if(basket[basket.length-1]===board[j][moves[i]-1]){
          basket.pop();
          cnt += 2;
        }else{
          basket.push(board[j][moves[i]-1);
          break;
        }
      }
    }
  }
  return cnt;
}
profile
어제보다 나은 오늘을 만드는 중

0개의 댓글