코팅테스트/백준 문제 모음
백준 2477번 파이썬 문제풀이(참외밭)
유지광이
2022. 1. 28. 23:58
728x90
이 문제도 보다보다 너무 답이 안보여서 힌트를 봤다. 힌트는 가장 긴 세로 및 가장 긴 가로길이를 곱하면 큰 전체 사각형의 넓이가 나온다. 여기서 가장 긴 변들과 인접해 있지 않은 변을 2개 찾은 후 그 2개의 길이를 이용해 넓이를 구하면 빈 사각형이 되므로 전체 사각형 넓이에서 그 넓이만큼 빼주면 된다.
(출처: https://itcrowd2016.tistory.com/84)
K = int(input())
max_height = 0 # 가장 긴 높이를 저장할 변수
max_width = 0 # 가장 긴 가로길이를 저장할 변수
max_width_index = 0 # 가장 긴 가로길이의 인덱스를 저장할 변수
max_height_index = 0 # 가장 긴 높이의 인덱스를 저장할 변수
info = [] # 변의 정보들을 저장할 리스트
for i in range(6):
temp = list(map(int, input().split()))
info.append(temp)
if temp[0] == 1 or temp[0] == 2: # 만약 가로 길이라면
if max_width < temp[1]: # 해당 길이가 가장 길다면
max_width = temp[1] # 그 길이를 가장긴 가로로 저장한 후
max_width_index = i # 그에 해당하는 인덱스를 저장
else:
if max_height < temp[1]: # 해당 길이가 가장 길다면
max_height = temp[1] # 그 길이를 가장긴 세로로 저장한 후
max_height_index = i # 그에 해당하는 인덱스를 저장
# 그 후 가장 긴 가로 및 세로와 인접한 변 2개와 가장긴 가로와 세로 총 4개를 새로운 리스트에 저장한다.
index_list = [info[max_height_index - 1], info[(max_height_index + 1) % 6], info[max_width_index - 1],
info[(max_width_index + 1) % 6]]
product = 1 # 곱을 저장할 변수
for i in info: # 입력받은 변들 중에
if i not in index_list: # 만약 새로운 리스트에 저장한 변 4개 중에 없다면 빈 사각형이므로
product *= i[1] # 그 넓이를 변수에 저장한다.
result = (max_width * max_height - product) * K # 전체 큰 직사각형 넓이에서 빈 사각형 넓이를 빼준 후 K를 곱한다.
print(result)
728x90