[백준 2477번][Python/파이썬] 참외밭

공학도 Lee·2023년 2월 8일
0

백준 문제 풀이

목록 보기
30/63
post-custom-banner

1. 문제


출처: 백준 2477번 참외밭

2. 풀이


참외밭의 모양이 얼마나 회전한 모양일지 모른다는 것이 해당 문제의 어려움이었다.

가로, 세로 가장 긴 변으로 그려지는 큰 사각형에서 밭에 포함되지 않는 작은 사각형을 빼주면 쉽게 밭의 넓이를 구할 수 있다.

가로, 세로 가장 긴 변은 max를 이용해서 찾으면 된다.

밭의 여러 모양을 그리면서 확인해 보니, 밭에 포함되지 않는 작은 사각형의 변들은 가장 긴 변들과 일정한 간격을 두고 있음을 알 수 있었다.

밭의 모든 변을 한 리스트에 저장하면, 작은 사각형의 세로 변은 가장 긴 가로변과 3만큼 index차이가 난다. 작은 사각형의 가로 변의 경우는 가장 긴 세로변과 마찬가지로 3만큼 index차이가 난다.
이를 이용하면, 쉽게 밭에 포함되지 않는 작은 사각형의 넓이를 구하고 최종적으로 밭의 넓이를 구할 수 있다.

3. 소스코드


K = int(input())
x = []
y = []
xy= []
for i in range(6):
    direc,length = map(int,input().split())
    if direc < 3:
        x.append(length)
    else:
        y.append(length)
    xy.append(length)
x_max = max(x)
y_max = max(y)

x_min = xy[xy.index(y_max)-3]
y_min = xy[xy.index(x_max)-3]
print(K*(x_max*y_max-x_min*y_min))

4. 그 외


문제를 처음 풀 때에는, 빼야 하는 작은 사각형의 변의 길이가 단순하게 min값으로 주어진다고 착각했었다. 실제로는 아닐 수도 있기 때문에, 풀이에서 적은 성질을 찾을 때까지 시간이 꽤 걸렸다.

profile
이창민, Changmin Lee
post-custom-banner

0개의 댓글