개짜증나는문제에에!!!!ㅊ
일단 오른쪽 이동!!!
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
char map[4][4] = { {"_A_"},{"#_D"},{"C_#"},{"#__"} };
int main() {
for (int y = 0; y < 3; y++) {
for (int x = 0; x < 3; x++) {
if (map[y][x] >= 'A' && map[y][x] <= 'Z'&&x<2) {
if (map[y][x + 1] == '_') {
swap(map[y][x + 1], map[y][x]);
}
}
if (map[y][x] >= 'A' && map[y][x] <= 'Z' && x==2) {
if (map[y][0] == '_') {
swap(map[y][x], map[y][2]);
}
}
}
}
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 3; x++) {
cout << map[y][x];
}
cout << "\n";
}
return 0;
}
아래이동~쓰
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 3; x++) {
if (map[y][x] >= 'A' && map[y][x] <= 'Z') {
if (map[y + 1][x] == '_') {
swap(map[y][x], map[y + 1][x]);
}
}
}
}
왼쪽이동쓰~
완성!
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
char map[4][4] = { {"_A_"},{"#_D"},{"C_#"},{"#__"} };
int main() {
//오른쪽이동
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 3; x++) {
if (map[y][x] >= 'A' && map[y][x] <= 'Z' && x < 2) {
if (map[y][x + 1] == '_') {
swap(map[y][x + 1], map[y][x]);
}
}
if (map[y][x] >= 'A' && map[y][x] <= 'Z' && x == 2) {
if (map[y][0] == '_') {
swap(map[y][x], map[y][2]);
}
}
}
}
//아래로이동
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 3; x++) {
if (map[y][x] >= 'A' && map[y][x] <= 'Z') {
if (map[y + 1][x] == '_') {
swap(map[y][x], map[y + 1][x]);
}
}
}
}
//왼쪽이동
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 3; x++) {
if (map[y][x] >= 'A' && map[y][x] <= 'Z') {
if (map[y][x - 1] == '_') { swap(map[y][x], map[y][x - 1]); }
}
}
}
//위로이동
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 3; x++) {
if (map[y][x] >= 'A' && map[y][x] <= 'Z'&&y!=0) {
if (map[y - 1][x] == '_') {
swap(map[y - 1][x], map[y][x]);
}
}
if (map[y][x] >= 'A' && map[y][x] <= 'Z' && y == 0) {
if (map[3][x] == '_') {
swap(map[y][x], map[y - 1][x]);
}
}
}
}
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 3; x++) {
if (map[y][x] >= 'A' && map[y][x] <= 'Z' && x < 2) {
if (map[y][x + 1] == '_') {
swap(map[y][x + 1], map[y][x]);
}
}
if (map[y][x] >= 'A' && map[y][x] <= 'Z' && x == 2) {
if (map[y][0] == '_') {
swap(map[y][x], map[y][2]);
}
}
}
}
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 3; x++) {
cout << map[y][x];
}
cout << "\n";
}
return 0;
}
[출력]

2)두번째아이디어,,
방향벡터로 할수없나,,좌표를 이동하는거니깐,,,
흠 좀더 고민해보기!!