For Programmer
백준 2477번 파이썬 문제풀이(참외밭) 본문
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
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 10157번 파이썬 문제풀이(자리배정) (0) | 2022.01.31 |
---|---|
백준 2527번 파이썬 문제풀이(직사각형) (0) | 2022.01.30 |
백준 2578번 파이썬 문제풀이(빙고) (0) | 2022.01.28 |
백준 2559번 파이썬 문제풀이(수열) (0) | 2022.01.28 |
백준 2304번 파이썬 문제풀이(창고 다각형 - 스택) (0) | 2022.01.27 |
Comments