https://programmers.co.kr/learn/courses/30/lessons/12905
1) 다른사람의 풀이
//가장 큰 정사각형
function solution(board){
var answer = 0;
var lenY = board.length;
var lenX = board[0].length;
var max = 0;
if (lenX < 2 || lenY < 2) {
for(var i = 0 ; i < lenY ; i++){
for(var j = 0; j < lenX ; j++) {
if (board[i][j] === 1) {
max = 1;
}
}
}
} else {
for(var i = 1 ; i < lenY ; i++){
for(var j = 1; j < lenX ; j++) {
if(board[i][j] === 1 ){
board[i][j]
= Math.min(board[i - 1][j], board[i][j - 1], board[i - 1][j - 1]) + 1;
if (board[i][j] > max) {
max = board[i][j];
}
}
}
}
}
answer = Math.pow(max, 2);
return answer;
}
2) 참고하고 푼 실패코드
function solution(board){
var answer = 0;
var max = 0;
var lenX = board[0].length;
var lenY = board.length;
for(var i=0; i<lenY; i++){
for(var j=0; j<lenX; j++){
if(i<1 || j<1){
if (board[i][j] === 1) {
max = 1;
}
}else{
if(board[i][j] === 1 ){
board[i][j]
= Math.min(board[i][j-1],board[i-1][j-1], board[i-1][j]) + 1;}
if(board[i][j]>max){ // 이 부분 놓치면 안됨.
max=board[i][j];
}
}
}
}
console.log(max);
answer = max*max;
return answer;
}
문제보다가 포기... -> 방법 자체를 모르겠어.. -> 해설 참조
참조해서 내가 푼건 왜 안되지?
(다시 확인 필요)
동적 프로그래밍, 메모이제이션