음준희 블로그
스터디 23/01/07 2116 : 주사위 쌓기 본문
2116번: 주사위 쌓기
첫줄에는 주사위의 개수가 입력된다. 그 다음 줄부터는 한 줄에 하나씩 주사위의 종류가 1번 주사위부터 주사위 번호 순서대로 입력된다. 주사위의 종류는 각 면에 적혀진 숫자가 그림1에 있는
www.acmicpc.net
풀이
가장 아래의 주사위의 밑면이 결정되면 나머지 주사위들의 밑면은 고정이 되고 옆면만 바뀌게 된다.
각 주사위들의 밑면에 대해 최대로 올 수 있는 옆면의 값을 미리 구해놓고 시작 주사위의 6면에 대해서 모든 경우를 탐색한다.
시간복잡도 : O(6 * N), N <= 10^4
#include<bits/stdc++.h>
#include<time.h>
#define MAX 1000000007
#define INF 2000000000
#define MOD 1000000007
using namespace std;
typedef long long ll;
typedef pair<int, int > pii;
typedef pair<long long, long long> pll;
typedef pair<double, double> pdd;
int dx[8] = { 0, -1, 0, 1, 1, 1, -1, -1 };
int dy[8] = { -1, 0, 1, 0, -1, 1, 1, -1 };
/*
int dx[2][6] = {
{1, -1, 0, 0 ,1, -1},
{1, -1, 0, 0, -1, 1}
};
int dy[2][6] = {
{0, 0, 1, -1 ,1, -1},
{0, 0, 1, -1, 1, -1}
};*/
//int dx[8] = { -1, -1, 1, 1, -2, -2, 2, 2 };
//int dy[8] = { 2, -2, 2, -2, -1, 1, -1, 1 };
void init() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
}
ll gcd(ll a, ll b) { for (; b; a %= b, swap(a, b)); return a; }
ll lcm(ll a, ll b) { return (a * b) / gcd(a, b); }
struct Node {
int next = 0;
int mx = 0;
};
struct Dice {
Node num[7];
};
Dice v[10001];
int main() {
init();
int ans = 0;
int n; cin >> n;
for (int i = 0; i < n; i++) {
int input[6];
for (int j = 0; j < 6; j++) {
cin >> input[j];
}
v[i].num[input[0]].next = input[5];
v[i].num[input[5]].next = input[0];
v[i].num[input[0]].mx = v[i].num[input[5]].mx
= max(input[1], max(input[2], max(input[3], input[4])));
v[i].num[input[1]].next = input[3];
v[i].num[input[3]].next = input[1];
v[i].num[input[1]].mx = v[i].num[input[3]].mx
= max(input[0], max(input[2], max(input[4], input[5])));
v[i].num[input[2]].next = input[4];
v[i].num[input[4]].next = input[2];
v[i].num[input[2]].mx = v[i].num[input[4]].mx
= max(input[0], max(input[1], max(input[3], input[5])));
}
for (int i = 1; i <= 6; i++) {
int x = i;
int sum = 0;
for (int j = 0; j < n; j++) {
sum += v[j].num[x].mx;
x = v[j].num[x].next;
}
ans = max(ans, sum);
}
cout << ans;
}'알고리즘 > 백준' 카테고리의 다른 글
| 스터디 23/01/14 22993 : 서든어택 3 (0) | 2023.01.20 |
|---|---|
| 백준 13308 : 주유소 (다익스트라, DP) (0) | 2023.01.18 |
| 스터디 23/01/07 2302 : 극장 좌석 (0) | 2023.01.13 |
| 스터디 23/01/07 2535 : 아시아 정보올림피아드 (0) | 2023.01.13 |
| 백준 16474 : 이상한 전깃줄(DP, LIS) (0) | 2023.01.11 |