5373번 큐빙

동도리동·2021년 10월 17일
0

코딩테스트

목록 보기
62/76

아.. 이게 맞나.. 그냥 일일이 다했다.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
int n;
char ch[4];
int k;
char square[8][11];
void change(char tmp1, char tmp2) {
	int tmp3;
	char tmp;
	if (tmp1 == 'U') tmp3 = 1;
	else if (tmp1 == 'D') tmp3 = 2;
	else if (tmp1 == 'F') tmp3 = 3;
	else if (tmp1 == 'B') tmp3 = 4;
	else if (tmp1 == 'L') tmp3 = 5;
	else tmp3 = 6;
	if (tmp2 == '+') {
		tmp = square[tmp3][1];
		square[tmp3][1] = square[tmp3][7];
		square[tmp3][7] = square[tmp3][9];
		square[tmp3][9] = square[tmp3][3];
		square[tmp3][3] = tmp;
		tmp = square[tmp3][2];
		square[tmp3][2] = square[tmp3][4];
		square[tmp3][4] = square[tmp3][8];
		square[tmp3][8] = square[tmp3][6];
		square[tmp3][6] = tmp;
	}
	else {
		tmp = square[tmp3][1];
		square[tmp3][1] = square[tmp3][3];
		square[tmp3][3] = square[tmp3][9];
		square[tmp3][9] = square[tmp3][7];
		square[tmp3][7] = tmp;
		tmp = square[tmp3][2];
		square[tmp3][2] = square[tmp3][6];
		square[tmp3][6] = square[tmp3][8];
		square[tmp3][8] = square[tmp3][4];
		square[tmp3][4] = tmp;
	}
}
void go() {
	char tmp1 = ch[0];
	char tmp2 = ch[1];
	char tmp;
	if (tmp1 == 'U') {
		if (tmp2 == '+') {
			for (int i = 1; i <= 3; i++) {
				tmp = square[3][i];
				square[3][i] = square[6][i];
				square[6][i] = square[4][i];
				square[4][i] = square[5][i];
				square[5][i] = tmp;
			}
		}
		else {
			for (int i = 1; i <= 3; i++) {
				tmp = square[3][i];
				square[3][i] = square[5][i];
				square[5][i] = square[4][i];
				square[4][i] = square[6][i];
				square[6][i] = tmp;
			}
		}
	}
	else if (tmp1 == 'D') {
		if (tmp2 == '+') {
			for (int i = 7; i <= 9; i++) {
				tmp = square[3][i];
				square[3][i] = square[5][i];
				square[5][i] = square[4][i];
				square[4][i] = square[6][i];
				square[6][i] = tmp;
			}
		}
		else {
			for (int i = 7; i <= 9; i++) {
				tmp = square[3][i];
				square[3][i] = square[6][i];
				square[6][i] = square[4][i];
				square[4][i] = square[5][i];
				square[5][i] = tmp;
			}
		}
	}
	else if (tmp1 == 'F') {
		if (tmp2 == '+') {
			tmp = square[1][7];
			square[1][7] = square[5][9];
			square[5][9] = square[2][3];
			square[2][3] = square[6][1];
			square[6][1] = tmp;
			tmp = square[1][8];
			square[1][8] = square[5][6];
			square[5][6] = square[2][2];
			square[2][2] = square[6][4];
			square[6][4] = tmp;
			tmp = square[1][9];
			square[1][9] = square[5][3];
			square[5][3] = square[2][1];
			square[2][1] = square[6][7];
			square[6][7] = tmp;
		}
		else {
			tmp = square[1][7];
			square[1][7] = square[6][1];
			square[6][1] = square[2][3];
			square[2][3] = square[5][9];
			square[5][9] = tmp;
			tmp = square[1][8];
			square[1][8] = square[6][4];
			square[6][4] = square[2][2];
			square[2][2] = square[5][6];
			square[5][6] = tmp;
			tmp = square[1][9];
			square[1][9] = square[6][7];
			square[6][7] = square[2][1];
			square[2][1] = square[5][3];
			square[5][3] = tmp;
		}
	}
	else if (tmp1 == 'B') {
		if (tmp2 == '+') {
			tmp = square[1][1];
			square[1][1] = square[6][3];
			square[6][3] = square[2][9];
			square[2][9] = square[5][7];
			square[5][7] = tmp;
			tmp = square[1][2];
			square[1][2] = square[6][6];
			square[6][6] = square[2][8];
			square[2][8] = square[5][4];
			square[5][4] = tmp;
			tmp = square[1][3];
			square[1][3] = square[6][9];
			square[6][9] = square[2][7];
			square[2][7] = square[5][1];
			square[5][1] = tmp;
		}
		else {
			tmp = square[1][1];
			square[1][1] = square[5][7];
			square[5][7] = square[2][9];
			square[2][9] = square[6][3];
			square[6][3] = tmp;
			tmp = square[1][2];
			square[1][2] = square[5][4];
			square[5][4] = square[2][8];
			square[2][8] = square[6][6];
			square[6][6] = tmp;
			tmp = square[1][3];
			square[1][3] = square[5][1];
			square[5][1] = square[2][7];
			square[2][7] = square[6][9];
			square[6][9] = tmp;
		}
	}
	else if (tmp1 == 'L') {
		if (tmp2 == '+') {
			tmp = square[1][1];
			square[1][1] = square[4][9];
			square[4][9] = square[2][1];
			square[2][1] = square[3][1];
			square[3][1] = tmp;
			tmp = square[1][4];
			square[1][4] = square[4][6];
			square[4][6] = square[2][4];
			square[2][4] = square[3][4];
			square[3][4] = tmp;
			tmp = square[1][7];
			square[1][7] = square[4][3];
			square[4][3] = square[2][7];
			square[2][7] = square[3][7];
			square[3][7] = tmp;
		}
		else {
			tmp = square[1][1];
			square[1][1] = square[3][1];
			square[3][1] = square[2][1];
			square[2][1] = square[4][9];
			square[4][9] = tmp;
			tmp = square[1][4];
			square[1][4] = square[3][4];
			square[3][4] = square[2][4];
			square[2][4] = square[4][6];
			square[4][6] = tmp;
			tmp = square[1][7];
			square[1][7] = square[3][7];
			square[3][7] = square[2][7];
			square[2][7] = square[4][3];
			square[4][3] = tmp;
		}
	}
	else if (tmp1 == 'R') {
		if (tmp2 == '+') {
			tmp = square[1][3];
			square[1][3] = square[3][3];
			square[3][3] = square[2][3];
			square[2][3] = square[4][7];
			square[4][7] = tmp;
			tmp = square[1][6];
			square[1][6] = square[3][6];
			square[3][6] = square[2][6];
			square[2][6] = square[4][4];
			square[4][4] = tmp;
			tmp = square[1][9];
			square[1][9] = square[3][9];
			square[3][9] = square[2][9];
			square[2][9] = square[4][1];
			square[4][1] = tmp;
		}
		else {
			tmp = square[1][3];
			square[1][3] = square[4][7];
			square[4][7] = square[2][3];
			square[2][3] = square[3][3];
			square[3][3] = tmp;
			tmp = square[1][6];
			square[1][6] = square[4][4];
			square[4][4] = square[2][6];
			square[2][6] = square[3][6];
			square[3][6] = tmp;
			tmp = square[1][9];
			square[1][9] = square[4][1];
			square[4][1] = square[2][9];
			square[2][9] = square[3][9];
			square[3][9] = tmp;
		}
	}
	change(tmp1, tmp2);
}
int main() {
	//freopen("in1.txt", "rt", stdin);
	cin >> n;
	while (n-- > 0) {
		for (int i = 1; i <= 9; i++) square[1][i] = 'w';
		for (int i = 1; i <= 9; i++) square[2][i] = 'y';
		for (int i = 1; i <= 9; i++) square[3][i] = 'r';
		for (int i = 1; i <= 9; i++) square[4][i] = 'o';
		for (int i = 1; i <= 9; i++) square[5][i] = 'g';
		for (int i = 1; i <= 9; i++) square[6][i] = 'b';
		cin >> k;
		for (int i = 0; i < k; i++) {
			cin >> ch;
			go();
		}
		for (int i = 1; i <= 9; i++) {
			cout << square[1][i];
			if (i % 3 == 0) cout << '\n';
		}
	}
	return 0;
}
profile
긍정코딩세상

0개의 댓글

관련 채용 정보