🖥 시작하며
시간 제한이 2초로 비교적 넉넉하기 때문에, 우선 완전탐색으로 구현할 생각부터 할 수 있다.
우선
result 변수를 선언한 후, 배열 순회 과정에서 count 변수로 각 꼭짓점이 같은지 판별해 같다면 reuslt 에 저장하는 방식으로 해결할 수 있다.⚙️ 코드
import sys input = sys.stdin.readline if __name__ == "__main__": """ 꼭짓점만 같으면 됨, count 수를 늘려 i + count 식만 확인하는 식으로. """ # N : 행, M : 열 N, M = map(int, input().split()) result = 1 # 정사각형 만들기 arr = [] for _ in range(N): number = input().rstrip() arr.append([int(digit) for digit in number]) # 이제 구현 # (0, 0)부터 (N-1, M-1)까지 정사각형 순환 for i in range(N): for j in range(M): # out of range를 방지하기 위함 for count in range(1, min(N - i, M - j)): if ( arr[i][j] == arr[i + count][j] == arr[i][j + count] == arr[i + count][j + count] ): result = max(result, count + 1) print(result**2) # 정사각형의 넓이 출력
![[백준] 1051 - 숫자 정사각형](https://reo91004.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fb4dac9d0-810c-47c4-800c-0ca10b8d0529%2F59a6b96b-ea1e-4699-b4a7-7d4639037809%2Fi_baekjoon.png?table=block&id=119d2f02-2ff6-8082-a954-eafe4102932d&cache=v2)
![[백준] 1051 - 숫자 정사각형](https://reo91004.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fb4dac9d0-810c-47c4-800c-0ca10b8d0529%2F429a23f3-afb3-4642-a11b-60f2076a61f6%2Fw_baekjoon.jpg?table=block&id=119d2f02-2ff6-8082-a954-eafe4102932d&cache=v2)

댓글