13. 프로그래머스(1단계) - 크레인 인형뽑기 게임

성훈·2021년 8월 4일
0

Algorithm

목록 보기
13/61
post-thumbnail

📌 문제의 조건

  1. 인형이 있는 매트릭스 배열과 기계가 뽑을 위치담은 숫자 배열 두가지가 인자로 주어짐.
  2. 인형을 뽑았을때 같은 인형을 연속해서 뽑으면 인형을 없애고, 기계가 인형을 모두 뽑았을때 몇개의 인형이 없어졌는지 반환.

제한사항 🤔

  • 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 queue = [];
  return moves.reduce((acc, cur) => {
    for (let elem of board) {
      if (elem[cur - 1]) {
        if (queue[queue.length - 1] !== elem[cur - 1]) {
          queue.push(elem[cur - 1]);
          elem[cur - 1] = 0;
          return acc;
        } else {
          queue.pop();
          elem[cur - 1] = 0;
          return acc + 2;
        }
      }
    }
    return acc;
  }, 0);
}

📌 리뷰

카카오 문제는 항상 문제가 장황한데 코드를 쓰고보면 얼마 안된다. 아직 1단계라 그래
반복문을 두개 돌려버릴까 하다가 그냥 리듀스로 반복문 하나를 대체했다.
문제 대충 훑어보고 인형 없앨때마다 acc에 +1 했었다가 한참 찾아서 +2로 바꿨다.

문제 좀 똑띠 읽을 필요성을 느낀 문제였다.

📌 문제 출처

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges#

profile
어떻게 이걸 풀어낼 수 있을까

0개의 댓글