[프로그래머스 Lv.2] 2018 KAKAO BLIND RECRUITMENT - [1차] 프렌즈4블록

김민지·2024년 1월 28일
0

✨ 문제 ✨



✨ 정답 ✨

const solution = (m, n, board) => {
  let answer = 0;
  board = board.map((v) => v.split(""));

  while (true) {
    const willArray = [];
    for (let i = 0; i < m - 1; i++) {
      for (let j = 0; j < n - 1; j++) {
        if (
          board[i][j] &&
          board[i][j] === board[i + 1][j] &&
          board[i][j] === board[i][j + 1] &&
          board[i][j] === board[i + 1][j + 1]
        ) {
          willArray.push([i, j]);
        }
      }
    }
      
    if (!willArray.length) {
      return [].concat(...board).filter((v) => !v).length;
    }

    for (let i = 0; i < willArray.length; i++) {
      const col = willArray[i][0];
      const row = willArray[i][1];
      board[col][row] = 0;
      board[col][row + 1] = 0;
      board[col + 1][row] = 0;
      board[col + 1][row + 1] = 0;
    }

    for (let i = m - 1; i > 0; i--) {
      if (!board[i].some((v) => !v)) {
          continue;
      }

      for (let j = 0; j < n; j++) {
        for (let k = i - 1; k >= 0 && !board[i][j]; k--) {
          if (board[k][j]) {
            board[i][j] = board[k][j];
            board[k][j] = 0;
            break;
          }
        }
      }
    }
  }
};

🧵 참고한 정답지 🧵

💡💡 기억해야 할 점 💡💡

profile
이건 대체 어떻게 만든 거지?

0개의 댓글

관련 채용 정보