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 | 31 |
Tags
- 부스트캠프웹모바일
- 변수
- 부스트캠프
- 운영체제
- 브라우저 렌더링
- CSSOM
- OS
- CRDT
- 데이터독립성
- 회고
- 그룹프로젝트
- 우선순위역전
- 모던 자바스크립트
- 인프콘
- 확인문제
- 모던자바스크립트
- 부스트컨퍼런스
- 부스트캠프7기
- Java
- 멤버십
- 타입
- 놀러와요_해커톤
- javascript
- DB #데이터베이스
- js
- 렌더 트리
- GDSC
- 우선순위상속프로토콜
- GDSC_PKNU
- 상태관리
Archives
- Today
- Total
dohun.log
[알고리즘] 1051-숫자 정사각형 : Python 본문
문제
N*M크기의 직사각형이 있다. 각 칸은 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 열에 평행해야 한다.
입력
첫째 줄에 N과 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 수가 주어진다.
출력
첫째 줄에 정답 정사각형의 크기를 출력한다.
[1051 - 숫자 정사각형] : https://www.acmicpc.net/problem/1051
1051번: 숫자 정사각형
N*M크기의 직사각형이 있다. 각 칸은 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는
www.acmicpc.net
문제 풀이
얼마 전에 풀었던 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