코드와이
[BAEKJOON] 1051. 숫자 정사각형 본문
문제링크
1051번: 숫자 정사각형
N*M크기의 직사각형이 있다. 각 칸은 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는
www.acmicpc.net
package acmicpc;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.stream.Stream;
public class 숫자_정사각형 {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
static int r;
static int c;
static int[][] arr;
static int ans;
public static void main(String[] args) throws IOException {
st = new StringTokenizer(br.readLine(), " ");
r = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
arr = new int[r][c];
for(int i = 0 ; i < r ; i++) {
arr[i] = Stream.of(br.readLine().split("")).mapToInt(Integer::parseInt).toArray();
}
ans = 1;
for(int i = 0 ; i < r - 1 ; i++) {
for(int j = 0 ; j < c - 1 ; j++) {
System.out.println("i : " + i + " j : " + j);
func(i,j,i+1,j+1);
}
}
System.out.println(ans);
}
public static void func(int sr, int sc, int cr, int cc) {
if((cr == r) || (cc == c)) return;
if(arr[sr][sc] == arr[sr][cc] && arr[sr][sc] == arr[cr][sc] && arr[sr][sc] == arr[cr][cc]) {
if (ans < (cc - sc + 1) * (cr - sr + 1)) {
ans = (cc - sc + 1) * (cr - sr + 1);
}
}
func(sr, sc, cr + 1, cc + 1);
}
}
'acmicpc' 카테고리의 다른 글
[BAEKJOON] 2164. 카드2 (0) | 2021.02.06 |
---|---|
[BAEKJOON] 1057. 토너먼트 (0) | 2021.02.06 |
[BAEKJOON] 2309. 일곱 난쟁이 (0) | 2021.02.05 |
[BAEKJOON] 1003. 피보나치 함수 (0) | 2021.02.04 |
[BAEKJOON] 1004. 어린 왕자 (0) | 2021.02.04 |