코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
✅ 직사각형의 시작점, 끝점을 정해서 해당 크기의 사각형 내에 있는 숫자들이 양수인지 판별하는 함수 필요
def isTrueSquare(sx, sy, ex, ey): #start x, start y, end x, end y
# 시작점부터 끝점까지 완전탐색
for i in range(sx, ex+1):
for j in range(sy, ey+1):
#한 좌표라도 음수가 나오면 False
if ground[i][j] <= 0:
return False
#전부 양수라면 True 반환
return True
✅ 위 함수를 이용해서 양수로 이루어진 직사각형의 양끝점 파악 후 크기 구함 -> 직사각형 크기 최대값 갱신
✔️ abs 절대값 +1
✔️ 끝점의 좌표 - 시작점의 좌표 + 1
#사각형 크기
def max_squre(x, y):
#최대 사각형 크기
#양수로만 이루어진 직사각형이 없다면 -1 출력해야 하기 때문에 초기값 -1로 설정
max_square_size = -1
#현재 좌표부터 입력된 영역 끝까지 양수로 이루어진 가장 큰 직사각형 탐색
for i in range(x, n):
for j in range(y, m):
if isTrueSquare(x, y, i, j):
size = (i - x + 1) * ( j - y + 1)
max_square_size = max(size, max_square_size)
return max_square_size
⚠️ 양수로 이루어진 직사각형이 없을 경우 -1을 출력해야 함을 주의해야 함 (처음에 문제 제대로 읽지 않아 0으로 초기화할 뻔 했음...)
def isTrueSquare(sx, sy, ex, ey): #start x, start y, end x, end y
# 시작점부터 끝점까지 완전탐색
for i in range(sx, ex+1):
for j in range(sy, ey+1):
#한 좌표라도 음수가 나오면 False
if ground[i][j] <= 0:
return False
#전부 양수라면 True 반환
return True
#사각형 크기
def max_squre(x, y):
#최대 사각형 크기
#양수로만 이루어진 직사각형이 없다면 -1 출력해야 하기 때문에 초기값 -1로 설정
max_square_size = -1
#현재 좌표부터 입력된 영역 끝까지 양수로 이루어진 가장 큰 직사각형 탐색
for i in range(x, n):
for j in range(y, m):
if isTrueSquare(x, y, i, j):
size = (i - x + 1) * ( j - y + 1)
max_square_size = max(size, max_square_size)
return max_square_size
n, m = map(int, input().split())
ground = [list(map(int, input().split())) for _ in range(n)]
max_size = -1
for i in range(n):
for j in range(m):
max_size = max(max_size, max_squre(i, j))
print(max_size)
[코드트리/INTERMEDIATE LOW] Simulation 1차원 바람 Python 파이썬 (0) | 2023.08.07 |
---|---|
[코드트리/INTERMEDIATE LOW] DP I 사각형 채우기 Python 파이썬 (0) | 2023.08.04 |
[코드트리/INTERMEDIATE LOW] DP I 계단 오르기 Python (0) | 2023.08.03 |
[코드트리/INTERMEDIATE LOW] Backtracking K개 중 하나를 N번 선택하기 Python (0) | 2023.08.01 |
[코드트리/INTERMEDIATE LOW] Simulation 금 채굴하기 Python (0) | 2023.07.31 |