백준 2477 참외밭

Hyun·2022년 10월 4일
0

코딩테스트

목록 보기
8/66

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

실패이유 : 구현실패

heights = [0] * 6
widths = [0] * 6		

N = int(input())

for i in range(6):						# 세로변과 가로변을 나눠서 저장
    dir, m = map(int, input().split())
    if dir <= 2:
        widths[i] = m
    else:
        heights[i] = m

h_idx = heights.index(max(heights))		# 가장 길이가 긴 세로변과 가로변의 인덱스를 찾는다.
w_idx = widths.index(max(widths))

if h_idx == 0:								# 가장 길이가 긴 세로변의 양 옆 가로변의 차를 구한다.
    small_w = abs(widths[5] - widths[1])
elif h_idx == 5:
    small_w = abs(widths[4] - widths[0])
else:
    small_w = abs(widths[h_idx - 1] - widths[h_idx + 1])

if w_idx == 0:								# 가장 길이가 긴 가로변의 양 옆 세로변의 차를 구한다.
    small_h = abs(heights[5] - heights[1])
elif w_idx == 5:
    small_h = abs(heights[4] - heights[0])
else:
    small_h = abs(heights[w_idx - 1] - heights[w_idx + 1])

big_A = sum(widths) * sum(heights) // 4		# 큰 사각형의 넓이
small_A = small_w * small_h					# 작은 사각형 (빈 공간) 의 넓이

print((big_A - small_A) * N)				
  • 가장 긴 세로변과, 가장 긴 가로변의 양 옆 변의 차는, 작은 사각형의 가로변과 세로변의 길이이다.

  • 따라서 가장 긴 가로변과 가장 긴 세로변의 인덱스를 기억하여, 양 옆 두변의 차를 구할 수 있다.
  • 양 옆 두변의 차는 작은 사각형 (빈 공간) 의 가로 길이와 세로 길이 이므로 넓이를 구할 수 있다.

출처 : https://itcrowd2016.tistory.com/84

0개의 댓글

관련 채용 정보