https://www.acmicpc.net/problem/2116
2116번: 주사위 쌓기
첫줄에는 주사위의 개수가 입력된다. 그 다음 줄부터는 한 줄에 하나씩 주사위의 종류가 1번 주사위부터 주사위 번호 순서대로 입력된다. 주사위의 종류는 각 면에 적혀진 숫자가 그림1에 있는
www.acmicpc.net
모든 경우를 다 해볼 필요가 없다.
사실 1번 주사위의 윗면만 정하면, 모든 주사위의 아래/윗 면이 정해지게 되고, 그리디 하게 남은 부분의 최댓값을 더하면 된다.
#include <iostream>
using namespace std;
int n, arr[10000][6];
int no[6] = { 5,3,4,1,2,0 };
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < 6; j++) {
cin >> arr[i][j];
}
}
int ans = 0;
for (int k = 0; k < 6; k++) {
int up = arr[0][k];
int temp = 0;
for (int i = 0; i < 6; i++) {
if (i != k && i != no[k]) {
temp = max(temp, arr[0][i]);
}
}
for (int i = 1; i < n; i++) {
int findBottomIdx = 0;
for (int j = 0; j < 6; j++) {
if (up == arr[i][j]) {
findBottomIdx = j;
break;
}
}
int tempp = 0;
for (int j = 0; j < 6; j++) {
if (j != findBottomIdx && j != no[findBottomIdx]) {
tempp = max(tempp, arr[i][j]);
}
}
temp += tempp;
up = arr[i][no[findBottomIdx]];
}
ans = max(ans, temp);
}
cout << ans;
}
'ps' 카테고리의 다른 글
[백준] 2698 - 인접한 비트의 개수 (0) | 2022.09.03 |
---|---|
[백준] 6987 - 월드컵 (0) | 2022.09.03 |
[백준] 2141 - 우체국 (0) | 2022.09.03 |
[백준] 17435 - 합성 함수와 쿼리 (0) | 2022.09.03 |
[백준] 9470 - Strahler 순서 (0) | 2022.09.03 |
댓글