import sys
sys.stdin = open("input.text", "rt")
#보여지는 면의 수에 따라서 생각해야함.
N = int(input())
data = list(map(int, input().split()))
res = 0
minList = [] #마주보는 면 중 최솟값 저장용 리스트
if N == 1:
data.sort()
for i in range(5):
res += data[i]
else: #개수 여러개로 정육면체
minList.append(min(data[0], data[5]))
minList.append(min(data[1], data[4]))
minList.append(min(data[2], data[3]))
#면이 1개, 2개, 3개 보이는 걸로 나눠서
minList.sort()
ss1 =minList[0] #1면만 보여질 때 사용
ss2 = minList[0] + minList[1] #2면만 보여질 때 사용
ss3 = sum(minList) #3면만 보여질 때 사용
#이제 각 면이 보여진 개수
c1 = (N-2) * (N-1) * 4 + (N-2) * (N-2)
c2 = (N-1) * 4 + (N-2) * 4
c3 = 4
res += ss1 * c1
res += ss2 * c2
res += ss3 * c3
print(res)
❤ 코멘트
해당 문제는 해석하는 것부터 어려웠다. N^3 주사위로 정육면체를 만들어서 6면 중 밑면 제외 5면에서 보이는 주사위 수 합의 최솟값을 구해야 했다.
생각을 해보면 보여지는 주사위의 면 수는 1면이 보이거나 2면이 보이거나 3면이 보이거나 3가지 경우 뿐이었다. 또한 각 면이 보이는 개수는 정해져 있기에 각 최솟값을 구해야 하는데
마주보는 값들 두 값 중 최솟값을 정해놓고 활용하면 됐다.