Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 렌더 트리
- 멤버십
- Java
- 타입
- 모던 자바스크립트
- 모던자바스크립트
- 부스트캠프
- 운영체제
- OS
- js
- 부스트캠프웹모바일
- 우선순위상속프로토콜
- 그룹프로젝트
- 브라우저 렌더링
- 우선순위역전
- DB #데이터베이스
- javascript
- CSSOM
- 데이터독립성
- CRDT
- 놀러와요_해커톤
- GDSC
- 회고
- 확인문제
- 변수
- GDSC_PKNU
- 부스트캠프7기
- 인프콘
- 상태관리
- 부스트컨퍼런스
Archives
- Today
- Total
dohun.log
[알고리즘] 1051-숫자 정사각형 : Python 본문
문제
N*M크기의 직사각형이 있다. 각 칸은 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 열에 평행해야 한다.
입력
첫째 줄에 N과 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 수가 주어진다.
출력
첫째 줄에 정답 정사각형의 크기를 출력한다.
[1051 - 숫자 정사각형] : https://www.acmicpc.net/problem/1051
문제 풀이
얼마 전에 풀었던 DP문제랑 유사한 문제다.
입력값
3 5
42101
22100
22101
1. 정사각형이 될 수 있는 가장 긴 변은 무엇인가?
3, 5중에 정사각형이 될 수 있는 가장 긴 변은 3이다. -> 답은 9보다 클 수 없다.
2. 정사각형 찾기
3 * 3 정사각형 후보부터 1 * 1 후보까지 차례대로 검사한다.
3. 찾은 최초의 정사각형이 정답
제일 큰 정사각형부터 검사하기 때문에 처음 정사각형이 나왔을 때 그 뒤로는 보지 않아도 된다.
코드
if __name__ == "__main__":
import sys
input = sys.stdin.readline
row, col = map(int, input().split())
datas = [list(input().rstrip()) for _ in range(row)]
result = 0
for k in range(min(row, col) - 1, -1, -1):
for i in range(k, row):
for j in range(k, col):
# 꼭짓점이 모두 같은지 확인
if datas[i][j] == datas[i - k][j] == datas[i][j - k] == datas[i - k][j - k]:
print((k + 1) ** 2)
quit()
'Study > 알고리즘' 카테고리의 다른 글
[알고리즘] 22352 -항체인식 : Python (0) | 2021.10.05 |
---|---|
[알고리즘] 7568-덩치 : Python (0) | 2021.10.01 |
Comments