[백준] 1051 - 숫자 정사각형
[백준] 1051 - 숫자 정사각형

[백준] 1051 - 숫자 정사각형

언어
Python
난이도
Sliver 3
다시 풀어보기
다시 풀어보기
알고리즘 유형
구현
브루트포스
작성자
박용성박용성
생성 일시
2024년 10월 08일

🖥 시작하며

시간 제한이 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) # 정사각형의 넓이 출력

📌 소감

 

댓글

guest