백준 문제풀이

[백준 2477번 문제] 참외밭

eunda_coding 2022. 8. 19. 22:01

이 문제는 ㄱ자 모양의 밭 모양의 길이를 입력받아서 넓이를 계산한 후에 제곱미터당 수확되는 참외의 갯수를 곱해 총 생산되는 참외 갯수를 구하는 문제이다.

처음에 어떻게 풀지 고민을 하다가 큰 사각형 넓이에서 작은 사각형 넓이를 빼주면 되겠다고 생각했다.

그래서 입력값을 받아서 가로와 세로로 구분해서 각 리스트에 저장한 후에 최대값끼리 곱하고 최소값끼리 곱해서 빼주면 되겠다고 생각했는데 틀렸다고 떴다ㅠ

 

다시 생각해보니깐 작은 사각형 길이가 항상 최소값이지 않을 경우도 있는게 문제였다.

작은 사각형의 가로세로 길이를 어떻게 구할지가 고민이였는데 입력받은 값대로 total리스트에 넣어주고 세로왁 가로의 최대값 인덱스를 구해서 -1과 -5한 인덱스값을 빼준 후에 절대값을 계산하면 작은 사각형의 변의 길이가 나온다

 

마지막으로 큰사각형 넓이에서 작은 사각형 넓이를 빼준 후 처음에 제곱미터당 입력받은 참외 수확 갯수를 곱해주면 최종답이나온다

 

import sys

input = sys.stdin.readline

num = int(input())
width = []
height = []
total = []

for i in range(6):
    dir, len = map(int, input().split(' '))
    if dir == 1 or dir == 2:
        width.append(len)
        total.append(len)
    else:
        height.append(len)
        total.append(len)

print(total)
big_area = (max(width)*max(height))

maxhidx = total.index(max(height))
maxwidx = total.index(max(width))
print(maxhidx, maxwidx)
small1 = abs(total[maxhidx-1] - total[(maxhidx-5 if maxhidx == 5 else maxhidx +1)])
small2 = abs(total[maxwidx-1] - total[(maxwidx-5 if maxwidx == 5 else maxwidx +1)])
print(small1, small2)

area = big_area - (small1 * small2)
print(area * num)