본문 바로가기
백준알고리즘/기하 1

(Python/🥈4)백준 알고리즘 2477번: 참외밭

by windy7271 2022. 5. 27.
728x90
반응형

문제 출처:https://www.acmicpc.net/problem/2477

 

2477번: 참외밭

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

www.acmicpc.net

풀이:

k = int(input())
a_li = []

w = h = w2 = h2 = 0

for i in range(6):
    x,a = map(int, input().split())
    a_li.append(a)
    if i % 2 == 0:              # 나머지
        w = max(w, a)
    else:
        h = max(h, a)
# 최댓값을 정해줌
# 가로 세로 순으로 바뀌므로 나머지 % = 0 이용

# 두번씩 나온애들 사이에 껴있는애들이 작은 사각형 높이와 너비임
# 작은 사각형

for i in range(6):              # 두번씩 나온 애 껴있는 애 찾는 방법 두개에 합이 높이면 w 길이나옴
    if i % 2 == 0 and h == a_li[(i+5) % 6] + a_li[(i+1) % 6]:
        w2 = a_li[i]
    elif i % 2 == 1 and w == a_li[(i+5) % 6] + a_li[(i+1) % 6]:
        h2 = a_li[i]
print(k*(w*h - w2*h2))

 

공식을 구하는건 쉬웠지만 코드로 치는건 어려웠다.

 

첫번째 포문으로 가장 큰 사각형의 넓이를 구해준다.

 

육각형이라서 12가 연속으로 나올수 없고 34가 연속으로 나올수없다

 

변의 방향이 1번씩 나온게 w 와 h 다 

작은 사각형은 연속된 방향 사이에 있는것이 가로와 세로가된다.

여기 예제에서는 20과 60 이 된다.

 

두번째 포문을 들리면서 i%2 == 0 을 해준 이유는 이 코드를 써주면 W변만 혹은 H변만 가져오는데 

그 변 사이에 있는 W혹은H 를 찾으려면 그 찾은 변에 합이 긴 W 나 H 가 되어야 한다.

 

내 코드로 예를 들면  h = 160 이므로 60과 100에 합인데 그 사이에 있는 숫자인 20이 W 가 된다.

H 구하는것도 마찬가지다.

 

 

 

반응형

댓글