kimTH65 / Coding

Coding Practice
0 stars 0 forks source link

코딩 문제 풀이 15(BackJoon) - C# #15

Open kimTH65 opened 1 year ago

kimTH65 commented 1 year ago

백준 1051번 : 숫자 정사각형

문제

N×M크기의 직사각형이 있다. 각 칸에는 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 열에 평행해야 한다.

입력

첫째 줄에 N과 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 수가 주어진다.

출력

첫째 줄에 정답 정사각형의 크기를 출력한다.

kimTH65 commented 1 year ago

풀이

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        int result = 1;
        string[] input_n = Console.ReadLine().Split();
        int[] N = Array.ConvertAll(input_n, s => int.Parse(s)); 
        int[,] arr = new int[N[0]+1,N[1]+1];
        int max_length = N.Min();

        for (int i = 1; i <= N[0]; i++){
            string Line = Console.ReadLine();
            char[] C = Line.ToCharArray(); 
            int[] L = Array.ConvertAll(C, s => (int)Char.GetNumericValue(s));

            for (int j = 0; j < N[1]; j++){
                arr[i,j+1] = L[j];
            }
        }

        for(int i = 0; i < max_length; i++){
            for(int j = 1; j <= N[0]-i; j++){
                for(int f = 1; f <= N[1]-i; f++){
                    if(arr[j,f] == arr[j,f+i] && arr[j,f+i] == arr[j+i,f] && arr[j+i,f] == arr[j+i,f+i]){
                        result = (i+1)*(i+1);
                    }
                }
            }
        }
        Console.WriteLine(result);
    }
}