백준 1041번: 주사위

Seungil Kim·2021년 5월 17일
1

PS

목록 보기
1/206

백준 1041번: 주사위

아이디어

주사위 전개도 모양이 다음과 같을 때

마주보는 면은 AF, BE, CD이다. A~F를 0~5로 대응시킨 후 마주보는 면이 없는 조합을 만든다. 마주보는 면이 동시에 보이는 일은 없기 때문.

만든 조합으로 합이 가장 작은 경우를 구하고, 규칙에 맞게 더해주면 된다.

코드

import itertools

N = int(input())
numList = list(map(int, input().split()))

#except 05 14 23

list3 = [(0, 1, 2), (0, 1, 3), (0, 2, 4), (0, 3, 4), (1, 2, 5), (1, 3, 5), (2, 4, 5), (3, 4, 5)]
oldList2 = list(itertools.combinations(range(6), 2))
deleteSet2 = {(0, 5), (1, 4), (2, 3)}
list2 = [i for i in oldList2 if i not in deleteSet2]

min1 = min(numList)
min2 = 100
min3 = 150
for i in list2:
    tmp = numList[i[0]] + numList[i[1]]
    min2 = min(min2, tmp)
for i in list3:
    tmp = numList[i[0]] + numList[i[1]] + numList[i[2]]
    min3 = min(min3, tmp)

if N == 1:
    print(sum(numList) - max(numList))

else: #N^2층: 3면 4개, 2면 (N-2)*4개, 1면 (N-2)^2개, 나머지층: 2면 4개, 1면 (N-2)*4개
    ans = min3*4 + min2*(N - 2)*4 + min1*(N - 2)**2 + (N - 1)*(min2*4 + min1*(N - 2)*4)
    print(ans)

주의점

int 자료형을 사용할 수 없다.

profile
블로그 옮겼어용 https://ks1ksi.io/

2개의 댓글

comment-user-thumbnail
2021년 5월 18일

어머 PS하는 남자 너무 멋있다,,,,^@^ 게다가 공군이라니...

1개의 답글