728x90
N = int(input())
lst=[]
x, y = 0, 0
for i in range(6):
a, b = map(int, input().split())
lst.append([a, b])
for i in range(6):
if lst[i][0] == 4 or lst[i][0] == 3:
if lst[i][1] > y:
y = lst[i][1]
elif lst[i][0] == 2 or lst[i][0] == 1:
if lst[i][1] > x:
x = lst[i][1]
for i in range(6):
if lst[i][0] == lst[(i + 2) % 6][0]:
if lst[(i + 1) % 6][0] == lst[(i + 3) % 6][0]:
small = lst[(i + 1) % 6][1] * lst[(i + 2) % 6][1]
print(N * (x * y - small))
오랜만에 또 안 보고 맞은 문제,, 하지만 엄청 오래걸림 거의 한시간 근접
육각형이고 방향도 정해져있고 그 모양도 한정되어있다는 것이 힌트였고..
연속해서 등장하는 숫자들이 같을때 그것으로 작은 밭크기를 구해야 했었다.
계속 고민을 하다가.. i == (i % 6) + 2 and (i+1) % 6 == (i+3) % 6같은 식으로 하면 쉽게 구할 수 있다는 것을 깨달음..
아이디어를 빨리 떠올리는 것이 중요한 것 같다.
728x90
'알고리즘 공부(C++)' 카테고리의 다른 글
백준 15649 N과 M(1) (0) | 2022.08.24 |
---|---|
1018 체스판 다시 칠하기 (0) | 2022.08.22 |
1181 단어 정렬 (0) | 2022.08.17 |
11650 좌표 정렬하기 (0) | 2022.08.16 |
10845 큐 (0) | 2022.08.16 |