[프로그래머스 Level 2] 가장 큰 정사각형 찾기
1분 읽기
풀이 1:
function solution(board){
const m = board.length;
const n = board[0].length;
const table = Array.from({ length: m }, () => new Array(n).fill(0));
let len = 0; // 한 변의 최대 길이
for(let i = 0; i < m; i++){
for(let j = 0; j < n; j++){
if(board[i][j] === 0) continue;
if(i === 0 || j === 0) table[i][j] = 1;
else {
table[i][j] = Math.min(
table[i-1][j-1],
Math.min(table[i-1][j], table[i][j-1])
) + 1;
}
len = Math.max(len, table[i][j]);
}
}
return len * len;
}Review
제한사항
- 표(board)는 2차원 배열로 주어집니다.
- 표(board)의 행(row)의 크기 : 1,000 이하의 자연수
- 표(board)의 열(column)의 크기 : 1,000 이하의 자연수
- 표(board)의 값은 1또는 0으로만 이루어져 있습니다.
DP8편 중 5번째
관련 글
4분 읽기
소수 구하기
소수 판별법과 소수를 구하는 알고리즘을 정리합니다.
1분 읽기
[프로그래머스 Level 2] 미로 탈출
프로그래머스 미로 탈출을 BFS로 풀이합니다.
1분 읽기
[프로그래머스 Level 2] 마법의 엘리베이터
프로그래머스 마법의 엘리베이터를 자리수 그리디로 풀이합니다.