백준 숫자 정사각형 node.js 풀이

버건디·2023년 5월 31일
0

백준

목록 보기
55/75

문제 링크

- 내 풀이

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

let [N, M] = input
  .shift()
  .split(" ")
  .map((str) => Number(str));
let board = input.map((arr) => arr.split("").map((str) => Number(str)));

let maxWidth = [1];

for (let i = 0; i < N; i++) {
  for (let j = 0; j < M; j++) {
    let point = board[i][j];

    for (let z = j + 1; z < M; z++) {
      if (point === board[i][z]) {
        let minusNum = z - j;

        if (
          // i + 각변을 더했을때 board판을 안넘는지 확인해야함
          i + minusNum < N &&
          point === board[i + minusNum][j] &&
          point === board[i + minusNum][z]
        ) {
          maxWidth.push((minusNum + 1) * (minusNum + 1));
        }
      }
    }
  }
}

console.log(Math.max(...maxWidth));

i + board를 했을때 보드판을 넘는지 확인을 하는게 중요했다.

각 꼭지점을 완전 탐색으로 돌면서 한개씩 확인해 준후 각 꼭지점의 차이가 같으면서 숫자들이 같다면 maxWidth 배열에 그 넓이들을 각각 넣어주었다.

profile
https://brgndy.me/ 로 옮기는 중입니다 :)

0개의 댓글