Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
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
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[BAEKJOON] 1051. 숫자 정사각형 본문

acmicpc

[BAEKJOON] 1051. 숫자 정사각형

코드와이 2021. 2. 6. 18:46

 

문제링크

www.acmicpc.net/problem/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