프로그래머스 #JavaScript - 가장 큰 정사각형

SSO·2020년 2월 6일
0

프로그래머스 Lv2

목록 보기
21/46

문제

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;
}

더 생각해보기

문제보다가 포기... -> 방법 자체를 모르겠어.. -> 해설 참조
참조해서 내가 푼건 왜 안되지?
(다시 확인 필요)

참고사항

동적 프로그래밍, 메모이제이션

profile
happy

0개의 댓글