프로그래머스 - 크레인 인형뽑기 게임 [JS]

2023. 1. 16. 11:00·알고리즘(Algorithm)
728x90
반응형

풀이

function solution(board, moves) {
  let pickedDolls = [];
  let res=0
  const checkDolls=(dolls)=>{
    for (let i = 0; i < dolls.length; i++) {
      if(dolls[i]===dolls[i+1]){
        res+=2
        pickedDolls.pop()
        pickedDolls.pop()
      }
    }
  }
  const helper = (dollRow) => {
    for (let i = 0; i < board.length; i++) {
      if (board[i][dollRow - 1] !== 0) {
        pickedDolls.push(board[i][dollRow - 1]);
        checkDolls(pickedDolls)
        board[i].splice(dollRow - 1, 1, 0);
        break;
      }
    }
  };
  moves.forEach((i) => {
    helper(i);
  });
  return res
}

checkDolls의 역할은 뽑은 인형들의 배열을 받아서 마지막 두개의 인형의 값이 일치하면 제거해 주는 역할

  const checkDolls=(dolls)=>{
    for (let i = 0; i < dolls.length; i++) {
      if(dolls[i]===dolls[i+1]){
        res+=2
        pickedDolls.pop()
        pickedDolls.pop()
      }
    }
  }

moves.forEach를 통해 크레인이 내려가야할 열을 받아서 for문을 통해 0이 아닌 값을 찾을 때 까지 반복하고

0이 아닌 값을 찾으면 뽑은 인형 배열에 값을 저장한 뒤, checkDolls를 통해 인형의 중복을 확인하고

크레인 기계(board)에 있던 인형을 0으로 바꾸고 break를 통해 반복문을 끝낸다.

break가 있는 이유는 for문을 board.length만큼 반복시키도록 만들어뒀기에 값이 0이 아니라면

뽑은 인형 배열(pickedDolls)에 계속 값을 저장한다.

  const helper = (dollRow) => {
    for (let i = 0; i < board.length; i++) {
      if (board[i][dollRow - 1] !== 0) {
        pickedDolls.push(board[i][dollRow - 1]);
        checkDolls(pickedDolls)
        board[i].splice(dollRow - 1, 1, 0);
        break;
      }
    }
  };
728x90
반응형
저작자표시 (새창열림)

'알고리즘(Algorithm)' 카테고리의 다른 글

프로그래머스 - 명예의 전당  (1) 2023.01.24
프로그래머스 - 키패드 누르기 [JS]  (0) 2023.01.16
프로그래머스 - 체육복(Greedy) [JS]  (3) 2023.01.13
프로그래머스 - 다트게임 [JS]  (0) 2023.01.11
프로그래머스 - 비밀지도 [JS]  (1) 2023.01.10
'알고리즘(Algorithm)' 카테고리의 다른 글
  • 프로그래머스 - 명예의 전당
  • 프로그래머스 - 키패드 누르기 [JS]
  • 프로그래머스 - 체육복(Greedy) [JS]
  • 프로그래머스 - 다트게임 [JS]
Hun-bot
Hun-bot
IT를 중심으로 다양한 것
  • Hun-bot
    로봇이 만드는 눈사람
    Hun-bot
  • 전체
    오늘
    어제
    • All Article (128)
      • Programmers (6)
        • TIP (1)
        • SQL (2)
        • LV1 (1)
        • LV2 (2)
        • LV3 (0)
      • Baekjoon (31)
        • Bronze (10)
        • Silver (19)
        • Gold (2)
        • Platinum (0)
        • Diamond (0)
      • Leetcode (0)
        • Easy (0)
        • Medium (0)
        • Hard (0)
        • SQL (0)
      • 알고리즘(Algorithm) (42)
      • JavaScript (40)
      • Linux (7)
      • JSP (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      오블완
      async await #js #문법 #자바스크립트 #비동기
      티스토리챌린지
      JS #JavaScript #프로그래머스 #알고리즘
      프로그래머스 #자바스크립트 #JS
      Algorithm
      프로그래머스
      알고리즘 #Algorithm
      Vue #Vue.js #정리
      백준
      알고리즘
      자바스크립트 #연습문제
      고득점 Kit
      JS #프로그래머스 #숫자의표현 #알고리즘
      JavaScript #Set #Collection
      JS #JavaScript #프로그래머스 #카카오
      JS #클래스
      c++
      JS #javascript #객체 #Object
      Javascript
      LeetCode #JS #Javascript #Algorithm
      리눅스 #입문
      JSP #Vscode #톰켓 #Tomcat #Java #Web #jdk
      SQL
      BaekJoon
      리눅스
      Programmers
      Python #알고리즘
      자바스크립트
      JS #정규표현식
    • 최근 댓글

    • hELLO· Designed By정상우.v4.10.3
    Hun-bot
    프로그래머스 - 크레인 인형뽑기 게임 [JS]
    상단으로

    티스토리툴바

    티스토리툴바