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)
- 가장 긴 세로변과, 가장 긴 가로변의 양 옆 변의 차는, 작은 사각형의 가로변과 세로변의 길이이다.
![]()
- 따라서 가장 긴 가로변과 가장 긴 세로변의 인덱스를 기억하여, 양 옆 두변의 차를 구할 수 있다.
- 양 옆 두변의 차는 작은 사각형 (빈 공간) 의 가로 길이와 세로 길이 이므로 넓이를 구할 수 있다.