[알고리즘] 백준 2897 몬스터 트럭 (자바스크립트)

Subin·2022년 12월 15일
0
post-thumbnail

리스트
몬스터 트럭

✏️ 요구 사항 분석

  • 주차장은 R행 C열의 표로 이뤄져 있다.
  • 해빈이의 몬스터 트럭은 2행 2열의 칸을 차지한다.
  • 표의 각 칸은 빌딩#, 주차 된 차X, 또는 빈 주차 공간.이다.
    해빈이가 주차 가능한 공간을 출력해라.

입력

  1. R행과 C열의 개수
  2. #, X 로 이루어진 R개의 줄에 C개의 문자

출력

  1. 아무 차도 부수지 않으면서 주차할 수 있는 공간의 개수
  2. 차 한 대를 부수고 주차할 수 있는 공간의 개수
  3. 차 두 대 ...개수
  4. 차 세 대 ...개수
  5. 차 네 대 ...개수

🗒 내 풀이

// 01:00:58
function solution(parkingLot) {
  const input = parkingLot.split("\n");
  const [R, C] = input[0].split(" ").map(Number);
  const SPACE = input.splice(1, R);
  let result = Array.from({ length: 5 }, () => 0);

  for (let i = 0; i < R - 1; i++) {
    for (let j = 0; j < C - 1; j++) {
      let count = 0;
      if (
        SPACE[i][j] === "#" ||
        SPACE[i][j + 1] === "#" ||
        SPACE[i + 1][j] === "#" ||
        SPACE[i + 1][j + 1] === "#"
      ) {
        continue;
      }
      if (SPACE[i][j] === "X") {
        count++;
      }
      if (SPACE[i + 1][j] === "X") {
        count++;
      }
      if (SPACE[i][j + 1] === "X") {
        count++;
      }
      if (SPACE[i + 1][j + 1] === "X") {
        count++;
      }
      for (let k = 0; k < result.length - 1; k++) {
        if (count === k) result[k]++;
      }
    }
  }
  return result.join("\n");
}

const parkingLot = `4 4
#..#
..X.
..X.
#XX#`;

console.log(solution(parkingLot));

⌨️ 풀이 과정

1

for (let i = 0; i < R - 1; i++) {
  for (let j = 0; j < C - 1; j++) {
  }
}

배열의 완전 탐색을 위해 2중 for문을 사용하였다.

2

let count = 0;
if (
  SPACE[i][j] === "#" ||
  SPACE[i][j + 1] === "#" ||
  SPACE[i + 1][j] === "#" ||
  SPACE[i + 1][j + 1] === "#"
) {
  continue;
}

2행 2열을 전부 탐색해 # 인 빌딩은 트럭이 부술 수 없기에 # 탐색시 countinue 를 사용했다.

3

if (SPACE[i][j] === "X") {
  count++;
}
if (SPACE[i + 1][j] === "X") {
  count++;
}
if (SPACE[i][j + 1] === "X") {
  count++;
}
if (SPACE[i + 1][j + 1] === "X") {
  count++;
}
for (let k = 0; k < result.length - 1; k++) {
  if (count === k) result[k]++;
}

주차장의 2행 2열을 전부 탐색하면서 X 의 개수 만큼 카운트 시킨다.
그 후 result 배열에 순서대로 저장한다.

4

return result.join("\n");

배열로 저장된 값을을 join() 를 통해 문자열화 해서 출력한다.

profile
고양이가 세상을 지배한다.

0개의 댓글