알고리즘

[알고리즘] 백준 주사위 - 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)