알고리즘

[백준, 파이썬, 1051번] 숫자 정사각형

hminor 2023. 12. 20. 12:00

풀이

  • 3중 for문을 사용해서 문제를 해결하고자 했으며
  • n은 범위, m은 가로, x는 n 범위에 따른 세로로 생각하여 문제를 해결하고자 했으며
  • try, except를 사용한 이유는 mtx의 범위를 벗어날 경우에 break를 걸기위해 사용
  • 그리고 더 빠른 제출을 위한 조건분기로는 
  • 큰 범위부터 찾는 것, 찾았다면 해당 for문 멈추기와 같은 것들이 있지만 
  • 그렇게까지는 하지 않아도 될 것 같아 그냥 제출

 

import sys
input = sys.stdin.readline

n,m = map(int,input().split())
mtx = [list(map(int,input().rstrip("\n"))) for _ in range(n)]

result = 0
for i in range(n):
    for j in range(m):
        for x in range(n-i):
            try:
                if mtx[i][j] == mtx[i][j+x] == mtx[i+x][j] == mtx[i+x][j+x]: result = max(result, (x+1)**2)
            except: break
print(result)