알고리즘
[알고리즘] 백준 주사위 - 1041
j9972
2022. 11. 15. 11:10
728x90
1. 문제
2. 접근
1. n =2, 3, 4 .. 이렇게 그리다보면 우리는 낮은 숫자 3개만을 사용한다는 사실을 알 수 있다
2. n == 1 일때는 그 주사위에서 가장 큰 값을 제외하고 나머지 값들의 합을 구하면 된다
3. n >=2 일때는 가장 낮은 값은 몇개가 나올지, 2번째 낮은값을 몇개가 나올지 , 3번째로 작은 값을 몇개가 나올지 를 구하면 된다
4. 3번째로 낮은 값은 항상 모서리 의 맨 위의 값만 가능하므로 4개고, 나머지 2개는 주석처리 해봤다
-> 그림을 그려서 주석을 이해해보는것을 추천해본다!
3. 풀이
import sys
input = sys.stdin.readline
# 주사위 갯수 n^3
n = int(input())
data = list(map(int, input().split()))
if n == 1:
print(sum(data)-max(data))
else:
res = [min(data[0], data[5]), min(data[1], data[4]), min(data[2], data[3])]
res.sort()
first = (5*(n**2) - 8*n + 4) * res[0]
# 4(n-2)(n-1) + 4n + 4(n-2) + (n-2)**2
second = (8*n - 8) * res[1]
# 8n - 8
third = 4 * res[2]
print(first+second+third)