-
[백준] 1051번_숫자정사각형Study/알고리즘 2020. 1. 28. 22:29
문제 링크 : https://www.acmicpc.net/problem/1051
1051번: 숫자 정사각형
N*M크기의 직사각형이 있다. 각 칸은 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 열에 평행해야 한다.
www.acmicpc.net
size = 0 n,m = map(int,input().split()) rec = [list(input()) for _ in range(n)] for i in range(n-1): for j in range(m-1): num = rec[i][j] for k in range(i+1,n): if rec[k][j] == num: length = k-i try: if (rec[i][j+length] == num) and (rec[i+length][j+length]==num): size = max(size,length) except IndexError: continue print((size+1)**2)
try-except 문을 피하고자
다시
size = 1 n,m = map(int,input().split()) rec = [list(input()) for _ in range(n)] for i in range(n-1): for j in range(m-1): num = rec[i][j] for k in range(i+1,n): if rec[k][j] == num: length = k-i if (i+length<n) and (j+length<m): if (rec[i][j+length] == num) and (rec[i+length][j+length]==num): size = max(size,length+1) print(size**2)
이렇게 풀었다.
+ 쓰고나니 if 절에서 (i+length<n) 이것은 확인 안해줘도 되었네ㅎ
'Study > 알고리즘' 카테고리의 다른 글
[백준] 15650번_N과M(2) (0) 2020.01.29 [백준] 15649번_N과M(1) (0) 2020.01.29 [백준] 1018번_체스판다시칠하기 (0) 2020.01.28 [백준] 1436번_영화감독숌 (0) 2020.01.28 [백준] 7568번_덩치 (0) 2020.01.28