Algorithm Problems

[백준/Python] 숫자 정사각형 - BruteForce

WakaraNai 2021. 7. 20. 03:34
728x90
반응형

https://www.acmicpc.net/problem/1051

 

1051번: 숫자 정사각형

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

www.acmicpc.net

 

 

 

Python

import sys
imput = sys.stdin.readline

n, m = map(int, input().split())
arr = [list(map(int, list(input()))) for _ in range(n)]
ans = 1
for i in range(n):
    for j in range(m):
        row, col = [], []
        for t in range(i+1, n):
            if arr[i][j] == arr[t][j]:
                row.append(t)
        for t in range(j+1, m):
            if arr[i][j] == arr[i][t]:
                col.append(t)
        result = []
        for r in row:
            for c in col:
                if (r-i+1 == c-j+1) and arr[r][c] == arr[i][j]:
                    ans = max(ans, (r-i+1)*(c-j+1))
print(ans)

 

 

보완

import sys
imput = sys.stdin.readline

n, m = map(int, input().split())
arr = [list(map(int, list(input()))) for _ in range(n)]
ans = 1

for i in range(n):
    for j in range(m):
        for w in range(1, min(n-i, m-j)):
            if arr[i][j] == arr[i+w][j] == arr[i][j+w] == arr[i+w][j+w]:
                ans = max(ans, (w+1)**2)
print(ans)
728x90
반응형