코테/프로그래머스

[프로그래머스/Lv. 2] 가장 큰 정사각형 찾기 (JAVA)

imname1am 2024. 1. 19. 22:04
반응형

📖 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

💡  풀이 방식

• DP

. 입력받은 2차원 배열의 행이나 열의 크기가 1이라면 바로 1을 출력하고 종료하게 한다. (예외처리, TC 1)

. 그게 아니라면, 2차원 배열을 (왼쪽 위 vs 왼쪽 vs 위쪽) 세 칸中 가장 작은 값 + 1을 해 갱신한다.

. 새롭게 완성된 2차원 배열에서 최댓값을 찾아 출력한다.

 

- dp 배열의 의미 : 현재 칸 (i, j)까지의 가장 긴 정사각형 길이 (여기서는 그냥 입력받은 2차원 배열 그대로 활용)

- dp 점화식 :  (왼쪽, 위, 왼쪽 위) 세 칸 中 최솟값 + 1

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.*;
 
class Solution {    
    public int solution(int[][] board) {
        int answer = 0;
        int r = board.length;
        int c = board[0].length;
        
        // board의 행 또는 열이 1인 경우 예외처리
        if(r < 2 || c < 2) {
            return 1;
        }
            
        for(int i = 1 ; i < r ; i++) {
            for(int j = 1 ; j < c ; j++) {
                if(board[i][j] == 0)    continue;
            
                // (왼쪽 위 vs 왼쪽 vs 위쪽) 세 칸 중 가장 작은 값 + 1을 해 채운다.
                board[i][j] = Math.min(board[i-1][j-1], Math.min(board[i-1][j], board[i][j - 1])) + 1;
                answer = Math.max(answer, board[i][j]);
            }
        }
        
        return answer*answer;
    }
}
cs

 

 


💦 어려웠던 점

- 브루트포스로 풀려다가 장렬하게 전사했다.. 이런 문제는 dp문제라는 걸 바로 간파했어야 했는디,,

- 2차원 누적합 문제 점화식으로 풀어봤는데,, 이 문제는 칸의 숫자값을 모두 더하는 누적합 문제가 아니라 그냥 (왼쪽, 위, 왼쪽 위) 세 칸 中 제일 작은 값 + 1해서 정사각형 길이를 구하면 되는 문제였던 더 쉬운 편이었던 것이다,,

 

 

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

 

[Java] 프로그래머스 Lv.2 : 가장 큰 정사각형 찾기

https://programmers.co.kr/learn/courses/30/lessons/12905 코딩테스트 연습 - 가장 큰 정사각형 찾기 [[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]] 9 programmers.co.kr 풀이 해당 문제의 규칙은 다음과 같다. 행 또는 열의 길이가 1

hu-coding.tistory.com

 

 

[프로그래머스 - Java] 가장 큰 정사각형 찾기

https://programmers.co.kr/learn/courses/30/lessons/12905 코딩테스트 연습 - 가장 큰 정사각형 찾기 [[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]] 9 programmers.co.kr 풀이 이 문제는 브루트포스로 푸는 경우 절대 효율성을 통과

excited-hyun.tistory.com

 

반응형