Level 29.5 - 8번

computer_log·2023년 8월 27일

개짜증나는문제에에!!!!ㅊ

일단 오른쪽 이동!!!


#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)두번째아이디어,,

방향벡터로 할수없나,,좌표를 이동하는거니깐,,,

흠 좀더 고민해보기!!

profile
computer_log

0개의 댓글