풀이는 해당 블로그를 참고했습니다.
처음 보는 유형이라 굉장히 복잡하게 느껴졌습니다. 하지만 주사위 면이 보이는 경우에 따라 나눠 생각하면 3가지 밖에 되지 않기 때문에 생각한 거 보다 간단했습니다.
(M 면이 보이는 주사위의 수) X (M 면의 최소합) 으로 3가지 경우를 모두 구해 더해주면 됩니다.
M 면의 최소합을 구하는 것이 굉장히 생소했습니다.
주사위 특성상 마주보는 면을 제외하고 모든 면이 인접해있다.
따라서 A,B,C,D,E,F를 사용자에게 입력받았을 때
0과5, 1과4, 2와3중 최소 값을 리스트에 저장하고
1면, 2면, 3면의 경우에 따라 더 작은 것부터 더해서 사용하면 된다.
참조한 블로그에선 이렇게 설명을 해주셨는데, 더 쉽게 설명하기가 힘든 것 같습니다.
실제로 따져보면 납득이 가는데, 해당 방법을 사용한 경험이 없다면 생각해내기 힘든 방법인 것 같습니다.
기억해 두면 도움이 될거 같습니다. 저는 이 부분을 기록하기 위해 포스팅을 했습니다.
파이썬 코드
N = int(input())
dice = list(map(int, input().split()))
if N == 1:
print(sum(dice)-max(dice))
else:
sumList = [min(dice[0], dice[5]),
min(dice[1], dice[4]),
min(dice[2], dice[3])]
sumList.sort()
n1 = (N-2)*(N-2) + (N-1)*(N-2)*4
n2 = (N-2)*4 + (N-1)*4
n3 = 4
ans = n1 * sumList[0] + n2 * sum(sumList[:2]) + n3 * sum(sumList)
print(ans)
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 1072: 게임 파이썬 리뷰 - 연산 오류, Y*100//X, int(Y/X*100) (0) | 2021.05.09 |
---|---|
[백준] 6236: 용돈 관리 파이썬 리뷰 (0) | 2021.02.23 |
[백준] 14501: 퇴사 파이썬 리뷰 (0) | 2021.02.14 |
[백준] 2133: 타일 채우기 파이썬 리뷰 (0) | 2021.02.13 |
[백준] 10844: 쉬운 계단 수 파이썬 리뷰 (0) | 2021.02.04 |
댓글