백준/Greedy

[그리디/백준] 1041번: 주사위

ydin 2022. 7. 11. 18:24

-문제 : https://www.acmicpc.net/problem/1041

 

스스로 푼 문제다!! (가뭄에 콩 나듯이ㅎ)

주사위를 쌓을 때

3면을 노출하는 것의 갯수 : 4,

2면을 노출하는 것의 갯수 : 4(n-2)+4(n-1),

1면을 노출하는 것의 갯수 :(n-2)^2 + 4(n-2)(n-1)

를 다 셌다.

 

그리고 붙어있는 3면의 합 중에 최솟값, 붙어있는 2면의 합 중에 최솟값, 여섯면 중에 최솟값을 각각 구해서 

위의 갯수에 각각 곱해서 더해줬다

 

n==1일 때 따로 구해서 해줘야 89%에서 틀리지 않는다 

Gold Level5 문제!

 

-정답 풀이

n=int(input())
a,b,c,d,e,f=map(int,input().split())
data=[a,b,c,d,e,f]
z=min(data)
y=min(a+b,a+e,a+c,a+d,b+f,b+d,b+c,c+e,c+f,d+e,d+f,e+f)
x=min(b+c+f,b+d+f,d+e+f,c+e+f,a+c+e,a+b+c,a+d+e,a+b+d)

if n==1:
    print(sum(data)-max(data))
elif n==2:
    print(x*4+y*4)
else:     
    three=x*4
    two=4*y*(2*n-3)
    one=z*(5*n*n+(-16)*n+12)

    print(one+two+three)