Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
27 | 28 | 29 | 30 |
Tags
- 백준
- 스프링 MVC
- 쓰레드 풀
- 문자열 압축
- 2638
- 다이나믹 프로그래밍
- BFS
- Spring
- 2589
- 2020 KAKAO BLIND
- Servlet
- mvc
- HTTP API
- 스프링
- 맛집
- 호유동
- dp
- 2839
- 1로 만들기
- 알고리즘
- 맛집 투어
- 서블릿
- 투어
- 포두부 보쌈
- 양꼬치
- 고모네 콩탕
- 설탕 배달
- 프로그래머스
- 동적 프로그래밍
- 완도산회
Archives
- Today
- Total
프로그래밍 공방
[백준] 1915번 : 가장 큰 정사각형 본문
문제
1915번: 가장 큰 정사각형
첫째 줄에 n, m(1 ≤ n, m ≤ 1,000)이 주어진다. 다음 n개의 줄에는 m개의 숫자로 배열이 주어진다.
www.acmicpc.net
문제해결방법
이 문제는 DP 문제로 점화식을 세워서 푸는 문제였다.
좌측 상단부터 우측 하단까지 배열을 탐색하며 해당 칸을 우측 하단으로 하는 가장 큰 정사각형의 크기를 기록한다.
예를 들어 위 그림은 배열의 값이 1인 (i, j) 칸을 탐색하는 중 (i-1, j) 칸에 5, (i-1, j-1) 칸에 6, (i, j-1) 칸에 3이 저장되어 있는 상태이다.
이때 셋 중에 가장 작은 값인 3을 선택해야 길이가 4인 가장 큰 정사각형을 만들 수 있다. (회색 점선)
위 내용을 점화식으로 표현하면 다음과 같다.
DP[i][j] = Min(DP[i-1][j-1], DP[i-1][j], DP[i][j-1]) + 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 27 28 | package baekjoon; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main1915_가장큰정사각형 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.nextToken()); int m = Integer.parseInt(st.nextToken()); int[][] dp = new int[n+2][m+2]; int max = 0; for(int i=1; i<=n; i++) { String s = br.readLine(); for(int j=1; j<=m; j++) { dp[i][j] = s.charAt(j-1)-'0'; if(dp[i][j]==1) { dp[i][j] = Math.min(dp[i-1][j-1], Math.min(dp[i][j-1], dp[i-1][j]))+1; if(max < dp[i][j]) max = dp[i][j]; } } } System.out.println(max*max); } } | cs |
코드에 대한 피드백이나 더 좋은 아이디어는 언제나 환영입니다.
'개발 > 문제해결' 카테고리의 다른 글
[프로그래머스] N으로 표현 (0) | 2020.12.07 |
---|---|
[백준] 3176번 : 도로 네트워크 (0) | 2020.12.06 |
[백준] 1504번 : 특정한 최단 경로 (0) | 2020.11.26 |
[프로그래머스] 구명보트 (0) | 2020.11.25 |
[프로그래머스] 압축 (0) | 2020.11.25 |