[백준 1915번] DP(다이나믹 프로그래밍) - 가장 큰 정사각형

김민지·2023년 7월 26일
0

냅다 시작 백준

목록 보기
67/118

✨ 문제 ✨

✨ 정답 ✨

const { count } = require("console");
const fs = require("fs");
const { nextTick } = require("process");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./예제.txt";
let input = fs.readFileSync(filePath).toString().trim();


// const fs = require('fs'); 
// let input = fs.readFileSync("/dev/stdin").toString().trim();

input=input.split('\n')
const [n, m] = input.shift().split(' ').map(Number);
let arr = Array.from({ length: n }, () => Array.from({ length: m }, () => 0));

input.map((i, idx) => (arr[idx] = i.trim().split('').map(Number)));
let dp = arr.map((x) => [...x]);

for (let i = 1; i < n; i++) {
  for (let j = 1; j < m; j++) {
    if (arr[i][j]) dp[i][j] = Math.min(dp[i - 1][j - 1], dp[i - 1][j], dp[i][j - 1]) + 1;
  }
}

let ans = 0;

for (let i = 0; i < n; i++) {
  for (let j = 0; j < m; j++) {
    ans = dp[i][j] > ans ? dp[i][j] : ans;
  }
}
console.log(ans ** 2);

🧵 참고한 정답지 🧵

https://velog.io/@ywc8851/%EB%B0%B1%EC%A4%80-1915-%EA%B0%80%EC%9E%A5-%ED%81%B0-%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95-javascript

💡💡 기억해야 할 점 💡💡

비슷하게 풀었었는데 왜 안 된걸까

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

0개의 댓글