알고리즘 공부

less than 1 minute read

1051 숫자 정사각형
https://www.acmicpc.net/problem/1051
주어진 숫자들 중에 네 꼭짓점이 같은 정사각형 중 가장 큰 것의 크기를 구하는 문제
그냥 for문으로 무작정 돌렸다.
더 좋은 방법이 없을지 생각해봐야겠다.
처음에는 큰거부터 보는게 효과적이라고 생각해 n과 m 중 더 큰 수에서부터 줄여나가는 방식으로 구하려고 했는데 이게 사실은 더 효율적일 것 같다.
그렇게 다시 해보도록..

N, M = map(int, input().split())
numbersMap = []
for _ in range(N):
    numbersMap.append(list(map(int,input())))

maxSize = min(N,M)
result = int(0)

for i in range(N):
    for j in range(M):
        for k in range(maxSize):
            if i+k<N and j+k<M:
                if numbersMap[i][j]==numbersMap[i][j+k]==numbersMap[i+k][j]==numbersMap[i+k][j+k]:
                    if result<k:
                        result=k
print((k+1)**2)

소요시간 ; 30분