풀이


ㄱ자 모양의 참외밭의 변의 길이들과 면적당 참외의 갯수가 주어졌을 때 수확가능한 참외의 갯수를 출력하는 문제이다.

구현해야할 것은 변의 길이들을 통해 참외밭의 넓이를 구하는 것이다.

6개의 변의 길이가 주어질 때 최대 높이와 너비를 제외한 4개의 길이 중 중간 2개는 꺾인 공간을 의미한다.

예시를 들어보자.

위와 같은 참외밭이 주어졌을 때, 길이는 한 꼭지점을 시작으로 입력되기 때문에

160 50 100 20 60 30 이나

60 30 160 50 100 20 등으로 입력받을 수 있다.

입력이 들어오면서 방향역시 주어지기 때문에 dl 리스트를 통해 최대 높이와 너비를 계산해 준 뒤,

tl 값을 정렬하면서 0번째와 1번째 값이 최대 높이와 너비가 될 경우 3, 4번째 값이 꺾인 지점이 된다.

육각형의 넓이를 구한 후 면적당 참외값을 곱하여 정답을 출력해주면된다.

소스코드


# 참외밭
import sys
input = sys.stdin.readline
 
k = int(input())
tl = []
dl = [0, 0, 0, 0, 0]
 
for _ in range(6):
    d, l = map(int, input().split())
    dl[d] += l
    tl.append(l)
 
while True:
    if tl[0] in dl and tl[1] in dl:
        break
    tl.insert(0, tl.pop())
 
print(k * (tl[0]*tl[1] - tl[3]*tl[4]))

References