이번 문제는.. 좀 그렇다. 일일이 다 구현해야 한다니...
헷갈려 죽는줄 알았다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool test(vector<int> cube) {
bool ch = true;
for (int i = 1; i < 24; i += 4) {
for (int j = 0; j < 3; j++) {
if (cube[i + j] != cube[i + j + 1]) return false;
}
}
return true;//true면 정답!
}
bool u(vector<int> cube,int i) {
bool ch = false;
//작업
if (i == 0) {//왼쪽
int temp = cube[13];
cube[13] = cube[5];
cube[5] = cube[17];
cube[17] = cube[21];
cube[21] = temp;
temp = cube[14];
cube[14] = cube[6];
cube[6] = cube[18];
cube[18] = cube[22];
cube[22] = temp;
}
else {
int temp = cube[17];
cube[17] = cube[5];
cube[5] = cube[13];
cube[13] = cube[21];
cube[13] = temp;
temp = cube[18];
cube[18] = cube[6];
cube[6] = cube[14];
cube[14] = cube[22];
cube[22] = temp;
}
return test(cube);
}
bool d(vector<int> cube, int i) {
bool ch = false;
//작업
if (i == 0) {
int temp = cube[15];
cube[15] = cube[7];
cube[7] = cube[19];
cube[19] = cube[23];
cube[23] = temp;
temp = cube[16];
cube[16] = cube[8];
cube[8] = cube[20];
cube[20] = cube[24];
cube[24] = temp;
}
else {
int temp = cube[19];
cube[19] = cube[7];
cube[7] = cube[15];
cube[15] = cube[23];
cube[23] = temp;
temp = cube[20];
cube[20] = cube[8];
cube[8] = cube[16];
cube[16] = cube[24];
cube[24] = temp;
}
return test(cube);
}
bool f(vector<int> cube, int i) {
bool ch = false;
//작업
if (i == 0) {
int temp = cube[17];
cube[17] = cube[10];
cube[10] = cube[16];
cube[16] = cube[3];
cube[3] = temp;
temp = cube[19];
cube[19] = cube[9];
cube[9] = cube[14];
cube[14] = cube[4];
cube[4] = temp;
}
else {
int temp = cube[17];
cube[17] = cube[3];
cube[3] = cube[16];
cube[16] = cube[10];
cube[10] = temp;
temp = cube[19];
cube[19] = cube[4];
cube[4] = cube[14];
cube[14] = cube[9];
cube[9] = temp;
}
return test(cube);
}
bool r(vector<int> cube, int i) {
bool ch = false;
//작업
if (i == 0) {
int temp = cube[18];
cube[18] = cube[12];
cube[12] = cube[15];
cube[15] = cube[1];
cube[1] = temp;
temp = cube[20];
cube[20] = cube[11];
cube[11] = cube[13];
cube[13] = cube[2];
cube[2] = temp;
}
else {
int temp = cube[18];
cube[18] = cube[1];
cube[1] = cube[15];
cube[15] = cube[12];
cube[12] = temp;
temp = cube[20];
cube[20] = cube[2];
cube[2] = cube[13];
cube[13] = cube[11];
cube[11] = temp;
}
return test(cube);
}
bool sl(vector<int> cube, int i) {
bool ch = false;
//작업
if (i == 0) {
int temp = cube[5];
cube[5] = cube[9];
cube[9] = cube[24];
cube[24] = cube[1];
cube[1] = temp;
temp = cube[7];
cube[7] = cube[11];
cube[11] = cube[22];
cube[22] = cube[3];
cube[3] = temp;
}
else {
int temp = cube[5];
cube[5] = cube[1];
cube[1] = cube[24];
cube[24] = cube[9];
cube[9] = temp;
temp = cube[7];
cube[7] = cube[3];
cube[3] = cube[22];
cube[22] = cube[11];
cube[11] = temp;
}
return test(cube);
}
bool sr(vector<int> cube, int i) {
bool ch = false;
//작업
if (i == 0) {
int temp = cube[6];
cube[6] = cube[2];
cube[2] = cube[23];
cube[23] = cube[10];
cube[10] = temp;
temp = cube[8];
cube[8] = cube[4];
cube[4] = cube[21];
cube[21] = cube[12];
cube[12] = temp;
}
else {
int temp = cube[6];
cube[6] = cube[10];
cube[10] = cube[23];
cube[23] = cube[2];
cube[2] = temp;
temp = cube[8];
cube[8] = cube[12];
cube[12] = cube[21];
cube[21] = cube[4];
cube[4] = temp;
}
return test(cube);
}
int main() {
//freopen("in1.txt", "rt", stdin);
vector<int> cube(25);
for (int i = 1; i <= 24; i++) cin >> cube[i];
for (int i = 0; i <= 1; i++) {
if (u(cube, i)) {
cout << 1 << '\n';
return 0;
}
}
for (int i = 0; i <= 1; i++) {
if (d(cube, i)) {
cout << 1 << '\n';
return 0;
}
}
for (int i = 0; i <= 1; i++) {
if (f(cube, i)) {
cout << 1 << '\n';
return 0;
}
}
for (int i = 0; i <= 1; i++) {
if (r(cube, i)) {
cout << 1 << '\n';
return 0;
}
}
for (int i = 0; i <= 1; i++) {
if (sl(cube, i)) {
cout << 1 << '\n';
return 0;
}
}
for (int i = 0; i <= 1; i++) {
if (sr(cube, i)) {
cout << 1 << '\n';
return 0;
}
}
cout << 0 << '\n';
return 0;
}