https://www.acmicpc.net/problem/1051
1051번: 숫자 정사각형
N×M크기의 직사각형이 있다. 각 칸에는 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행
www.acmicpc.net
해석 및 팁
이 문제는 반복문을 통해 한 점을 기준으로 같은 길이만큼 늘려가면서 같은 값이 있는지를 찾아내면 됩니다. 주의할 점은 기준점과 길이의 합이 직사각형의 크기를 벗어나면 안 된다는 점입니다.
Java 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int max = -1;
int n = sc.nextInt();
int m = sc.nextInt();
int len = Math.min(n, m);
int[][] arr = new int[n][m];
for(int i = 0; i < n; i++) {
String str = sc.next();
for(int j = 0; j < m; j++) arr[i][j] = str.charAt(j) - '0';
}
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
for(int k = 1; k <= len; k++) {
if(i + k <= n && j + k <= m && arr[i][j] == arr[i+k-1][j]
&& arr[i+k-1][j] == arr[i][j+k-1] && arr[i][j] == arr[i+k-1][j+k-1]) {
max = Math.max(k, max);
}
}
}
}
System.out.println(max * max);
}
}
'백준' 카테고리의 다른 글
백준 2331 반복수열(Java) (0) | 2023.01.29 |
---|---|
백준 9656 돌 게임 2(Java) (0) | 2023.01.29 |
백준 3986 좋은 단어(Java) (0) | 2023.01.29 |
백준 1244 스위치 켜고 끄기(Java) (0) | 2023.01.28 |
백준 1543 문서 검색(Java) (0) | 2023.01.28 |