주사위는 눈 2개씩 짝을 이룬다. [A, B, C, D, E, F]
주사위는 [A, F]
, [B, E]
, [C, D]
가 짝을 이루고, 하나가 보일 때 다른 눈은 보이지 않는다.
min_dice = [min(dice[i], dice[-(i+1)]) for i in range(3)]
list[-(i+1)]
은 뒤에서부터 인덱스를 찾는다. 짝이 맞는 눈을 비교해 작은 값을 리스트에 추가한다.
n
이 5
이고 주사위 눈이 [1, 2, 3, 4, 5, 6]
이라면, 육면체에서 보이는 면은 그림과 같다.
min_dice[0]
을 n ** 2
만큼 곱한 후 2배이다.min_dice[1]
을 n * 2
만큼 곱과 제일 작은 눈값 `min_dice[0]
을 n * (n - 2)
만큼 곱을 더한 후 2배이다.min_dice[2]
4
개와 min_dice[1] * (n-2)
값 4
개, 그리고 min_dice[0] * (n - 2) * (n - 2)
을 더한 값이다.잘 맞다가 자꾸 마지막에 틀리는 이유를 몰랐다. 검색으로 알아보니 n = 1
인 경우를 간과했다. 이때는 제일 큰 수를 제외한 나머지를 합하면 된다.
from sys import stdin
input = stdin.readline
n = int(input())
dice = list(map(int, input().split()))
if n == 1:
dice.sort()
print(sum(dice[:5]))
exit(0)
min_dice = [min(dice[i], dice[-(i+1)]) for i in range(3)]
min_dice.sort()
a = (min_dice[0] * n ** 2) * 2
b = ((min_dice[1] * n * 2) + (min_dice[0] * n * (n - 2))) * 2
c = (min_dice[2] * 4) + (min_dice[1] * (n-2) * 4) + (min_dice[0] * (n - 2) * (n - 2))
print(a + b + c)