본문 바로가기
ALGORITHM/BAEKJOON

[BOJ/Python] 2477. 참외밭

by 안녕나는현서 2022. 6. 9.
728x90

📌 문제

https://www.acmicpc.net/problem/2477

 

2477번: 참외밭

첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지

www.acmicpc.net

 

📌 문제 접근 방법

  1. ㄱ 모양의 도형의 넓이를 구하는 방법 : (큰 사각형 넓이) - (작은 사각형 넓이)
  2. 작은 사각형 한 변의 길이 : 가장 긴 변맞닿은 두변의 차의 절댓값
    가장 긴 변 160과 맞닿은 두 변 : 30, 50
    20 = abs(30 - 50)

 

📌 코드

# 백준 2477 참외밭

K = int(input())

lengths = []

max_even = max_odd = even_idx = odd_idx = -1

# 어차피 가로-세로-가로-세로-... 순으로 정렬되어있기 때문에 가로, 세로를 구분할 필요x
for i in range(6):
    way, length = map(int, input().split())

    if not i%2 and max_even < length:
        max_even = length
        even_idx = i
    elif i%2 and max_odd < length:
        max_odd = length
        odd_idx = i
    
    lengths.append(length)

# '홀수 번째 중 가장 큰 변'과 양 옆으로 맞닿아있는 변들의 차 = 짝수 번째 중 작은 사각형의 길이
sub_even = abs(lengths[odd_idx-1] - lengths[(odd_idx+1)%6])
sub_odd = abs(lengths[even_idx-1] - lengths[(even_idx+1)%6])

width = (max_even * max_odd) - (sub_even * sub_odd)
print(K * width)
728x90

댓글