https://programmers.co.kr/learn/courses/30/lessons/12905
1와 0로 채워진 표에서 만들 수 있는 가장 큰 정사각형의 크기를 반환해라
필자가 푼 문제풀이
function solution(board) {
let answer = 0;
if (board.length < 2 && board[0].length < 2) return 1;
for (let i = 1; i < board.length; i++) {
for (let j = 1; j < board[i].length; j++) {
if (board[i][j]) {
const up = board[i - 1][j];
const left = board[i][j - 1];
const cross = board[i - 1][j - 1];
board[i][j] = Math.min(up, left, cross) + 1;
answer = Math.max(answer, board[i][j]);
}
}
}
return answer * answer;
}
이 문제는 DP의 맛보기 같은 문제였다.
일단 생각을 해야지 풀 수 있는 문제라고 생각한다.
필자는 처음에 1이 연속적으로 들어가있는 index들을 모아서 재귀함수로 비교하려고 했지만 그게 아니고 훨씬 간단한 방법이 있었다.
그리고 answer와 계속 비교하면서 가장 큰 길이의 곱을 반환하면 답이 나온다.
2022.02.14