[백준] #2477 참외밭 python

2022. 12. 30. 21:14

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

 

2477번: 참외밭

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

www.acmicpc.net

 

📕 설명 📕

가장 큰 직각 사각형에서 작은 직각 사각형의 넓이를 알아내어 풀이하였다.

 

1. 직사각형을 나누어 두 가지로 분리하여 넓이를 구한다.

 

2. 큰 직사각형에서 작은 직사각형의 넓이를 빼어 넓이를 구한다.

 

두 가지 방법 중,

 

2번 방법으로 코드로 구현할 수 있을 것 같았다.

 

방향과 길이를 담은 list를 각각 만들고, 

각 방향에 대해 방향이 1번 나오게 되면 그것은 큰 직사각형의 한 변의 길이므로 해당 사항을 catch했다.

그리고, 해당 인덱스 후 3번째가 작은 직사각형의 길이라는 것을 알아냈다. 그리하여 해당 인덱스를 tmp에 저장하고,

tmp의 값에 기준을 두고 mini box에 길이를 추가하였다.

 

🧑🏻‍💻 나의 풀이 🧑🏻‍💻

 

K = int(input())
widths = [input().split() for _ in range(6)]
direction = []
length = []
for i in widths:
    direction.append(int(i[0]))
for i in widths:
    length.append(int(i[1]))
max_boxes = []
min_boxes = []

for i in range(1,5):
    if direction.count(i) == 1:
        max_boxes.append(length[direction.index(i)])
        tmp = direction.index(i) + 3
        if tmp >= 6:
            tmp -= 6
        min_boxes.append(length[tmp])

wid = max_boxes[0] * max_boxes[1] - min_boxes[0] * min_boxes[1]
print(wid * K)

 

BELATED ARTICLES

more