백준 1041번 주사위 파이썬

박슬빈·2021년 9월 10일
0

알고리즘

목록 보기
10/40

문제

입력 , 출력

solution

import sys

input = sys.stdin.readline

n = int(input())
arr1 = list(map(int, input().split()))
if n == 1:
    print(sum(arr1) - max(arr1))
else:
    arr = [min(arr1[0], arr1[5]), min(arr1[1], arr1[4]), min(arr1[2], arr1[3])]
    arr.sort()
    res0 = (arr[0] + arr[1]) * (n - 1) * 4 # 세로 모서리 4개
    res1 = (arr[0] + arr[1]) * (n - 2) * 4 # 윗면 모서리 4개
    res2 = (arr[0] + arr[1] + arr[2]) * 4 # 윗면에서 3면 보이는 주사위 4개
    res3 = (arr[0]) * (n - 2) * 4 # 맨윗면 2개보이는 모서리 4개
    res4 = arr[0] * (n - 2) * (n - 2) * 5 # 가운데 정사각형 5개
    print(res0 + res1 + res2 + res3 + res4)

설명

값을 구하는 방식은 위에 주석에 있다.
주사위 구조는 마주보는 면 빼고는 모든 면이 붙어있기때문에
마주보는 면 3개 중에서 가장 작은것들 선택하면 최소값이 된다.

후기

그리디 알고리즘이라기 보단 그냥 단순 수학문제를 푸는 기분이였다.
가장 작은 3면을 찾는것이 좀 어려웠다.

profile
이것저것합니다

0개의 댓글