백준/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)