일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- spring
- WAS
- Servlet
- FrontController
- 양자
- JPA
- SpringBoot
- RequestDispatcher
- Spring Container
- web.xml
- Handler Mapping
- 양자의 이중성
- 양자컴퓨터
- DispatchServlet
- Microsoft Hackers Ground
- ContextLoaderListener
- 양자의 얽힘
- dd
- 양자의 중첩
- tomcat
- spring boot
- Today
- Total
HiTHerE !
1041 : 주사위 본문
https://www.acmicpc.net/problem/1041
1041번: 주사위
첫째 줄에 N이 주어진다. 둘째 줄에 주사위에 쓰여 있는 수가 주어진다. 위의 그림에서 A, B, C, D, E, F에 쓰여 있는 수가 차례대로 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, 쓰여 있는 수
www.acmicpc.net
먼저, 전개도를 보고 A B C D E F 가 배치된 모습이 특이하다는 생각이 들었다.
그런데 또 입력 둘째 줄은 A B C D E F 순서대로 주어진다.
' 이유가 있겠지..! ' 하고 보니, 다음과 같은 관계가 보였다.
정육면체를 구성하는 주사위는
(1) 1면이 보이는 부분의 주사위
(2) 2면이 보이는 모서리 부분의 주사위
(3) 3면이 보이는 정육면체 꼭짓점 부분의 주사위
이렇게 세 가지 경우로 나눌 수 있고, 각 경우의 개수는 다음과 같다.
(1) (N-2) * (N-2) + 4 * (N-1) * (N-2) : 윗 면 + 옆 면
(2) 4 * (N-1) + 4 * (N-2) : 세로 모서리 + 윗 모서리
(3) 4개 : 정육면체의 윗 꼭짓점
마주보는 면 세 쌍 [ A - F / B - E / C - D ] 에서 각각 둘 중 더 작은 값을 가진 면을 선택하면
정육면체의 꼭짓점 하나를 기준으로 인접한 세 면이 구성된다.
그리고 선택된 각 면에 적힌 세 수를 a, b, c라 하자. (a >= b >= c)
보이는 5개의 면에 쓰여있는 수의 합의 최솟값은
a*(1) + b*{ (1) + (2) } + c*{ (1) + (2) + (3) } 이다.
아 ! 그리고 코드를 작성할 때, N이 1인 경우를 따로 고려해야 한다는 것을 잊으면 안된다.
import sys
n = int(sys.stdin.readline())
num_list = list(map(int, sys.stdin.readline().split()))
if n == 1:
print(sum(num_list) - max(num_list))
else:
min_list = [min(num_list[0], num_list[5])
, min(num_list[1], num_list[4])
, min(num_list[2], num_list[3])]
min_list.sort()
s1 = (n-2)*(n-2) + 4*(n-1)*(n-2)
s2 = 4*(n-1) + 4*(n-2)
s3 = 4
ans = s1*min_list[0] + s2*(min_list[0] + min_list[1]) + s3*(sum(min_list))
print(ans)
'BOJ' 카테고리의 다른 글
1781 : 컵라면 (0) | 2023.02.27 |
---|---|
1715 : 카드 정렬하기 (0) | 2023.02.20 |
1092 : 배 (0) | 2023.02.20 |
11000 : 강의실 배정 (1) | 2023.02.13 |
1461 : 도서관 (1) | 2023.02.13 |