새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기
알고리즘 문제풀이/Python

[백준] 1051 숫자 정사각형

by 언호 2022. 3. 11.

📖 문제


🧑🏻‍💻 풀이 과정

1) 문제 이해 및 접근

가장 큰 정사각형을 찾아야하므로 초기에 변의 길이를 가장 길게 시작하여 줄여가며 정답을 찾았습니다.

2) 알고리즘

  • 구현

3) 풀이 코드

사용 언어 - Python

import sys
sys.stdin = open('input.txt')

N, M = map(int, sys.stdin.readline().split())                           # 행, 열
square = [list(sys.stdin.readline().rstrip()) for _ in range(N)]        # 입력으로 받은 사각형
answer = min(N, M)                                                      # 정사각형이므로 열과 행 중 짧은 변의 길이를 구함
end = False                                                             # 정답을 찾았는지 유무

while not end:
    for i in range(N-answer+1):                                         # 왼쪽 위에서부터 오른쪽 아래로 좌표를 탐색
        for j in range(M-answer+1):
            if square[i][j] == square[i+answer-1][j] ==\
                square[i][j+answer-1] ==square[i+answer-1][j+answer-1]: # 네개의 꼭짓점의 값이 같다면
                end = True                                              # 종료
                break
        if end:
            break
    else:
        answer -= 1

print(answer**2)            # 출력

📝 결과 및 학습한 내용

1) 어려웠던 내용

특별히 없습니다.

2) 새롭게 학습한 내용

특별히 없습니다.


🔗 문제 링크

- https://www.acmicpc.net/problem/1051

 

1051번: 숫자 정사각형

N×M크기의 직사각형이 있다. 각 칸에는 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행

www.acmicpc.net

 

 

※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다

댓글