https://www.acmicpc.net/problem/1051
문제
풀이
첫번째 줄에 얻은 값들을 num이라는 리스트에 저장하고, 두번째 줄부터 입력되는 정사각형의 각 숫자들을 rec라는 2차원 리스트를 생성하여 값을 저장한다. 네 꼭짓점의 수가 모두 같은 가장 큰 정사각형의 크기를 출력해야 하므로, 해당 정사각형 내에서 만들 수 있는 가장 큰 정사각형 변의 길이에서 시작하여 변의 길이를 하나씩 줄여가는 반복문을 만든다.
반복문을 사용하여 위와 같은 방식으로 정사각형의 위치를 움직여가며 해당 정사각형의 네 꼭짓점의 숫자를 비교한다. 만약 네 꼭짓점의 숫자가 모두 같을 경우, 해당 변의 길이를 제곱한 값을 계산하여 정사각형의 크기를 출력하도록 한다.
코드
num=[*map(int,input().split())]
rec=[]
max=0
for i in range(num[0]):
rec.append(input())
if num[0]>num[1]:
min=num[1]
else:
min=num[0]
for i in range(min,0,-1):
for y in range(num[1]-i+1):
for x in range(num[0]-i+1):
if (rec[x][y]==rec[x+i-1][y]==rec[x][y+i-1]==rec[x+i-1][y+i-1]):
if i*i>max:
max=i*i
print(max)
결과
'Koala - 5기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/C++]알고리즘 1051번 숫자 정사각형 (0) | 2022.01.15 |
---|---|
[BOJ / C++] 1018 : 체스판 다시 칠하기 (0) | 2022.01.15 |
[BOJ / c++] 6603 - 로또 (0) | 2022.01.14 |
[BOJ / c++] 3015 - 오아시스 재결합 (0) | 2022.01.14 |
[BOJ / JAVA] 15654번 - N과 M(5) (0) | 2022.01.13 |