주사위 전개도 모양이 다음과 같을 때
마주보는 면은 AF, BE, CD이다. A~F를 0~5로 대응시킨 후 마주보는 면이 없는 조합을 만든다. 마주보는 면이 동시에 보이는 일은 없기 때문.
만든 조합으로 합이 가장 작은 경우를 구하고, 규칙에 맞게 더해주면 된다.
import itertools
N = int(input())
numList = list(map(int, input().split()))
#except 05 14 23
list3 = [(0, 1, 2), (0, 1, 3), (0, 2, 4), (0, 3, 4), (1, 2, 5), (1, 3, 5), (2, 4, 5), (3, 4, 5)]
oldList2 = list(itertools.combinations(range(6), 2))
deleteSet2 = {(0, 5), (1, 4), (2, 3)}
list2 = [i for i in oldList2 if i not in deleteSet2]
min1 = min(numList)
min2 = 100
min3 = 150
for i in list2:
tmp = numList[i[0]] + numList[i[1]]
min2 = min(min2, tmp)
for i in list3:
tmp = numList[i[0]] + numList[i[1]] + numList[i[2]]
min3 = min(min3, tmp)
if N == 1:
print(sum(numList) - max(numList))
else: #N^2층: 3면 4개, 2면 (N-2)*4개, 1면 (N-2)^2개, 나머지층: 2면 4개, 1면 (N-2)*4개
ans = min3*4 + min2*(N - 2)*4 + min1*(N - 2)**2 + (N - 1)*(min2*4 + min1*(N - 2)*4)
print(ans)
int 자료형을 사용할 수 없다.
어머 PS하는 남자 너무 멋있다,,,,^@^ 게다가 공군이라니...