반응형
#include <iostream>
using namespace std;
char map[4][4];
int monsind[3][2];
int direct[4][2] = {
0,1,//right
-1,0,//down
0,-1,//left
1,0,//up
};
void findmonsind() {
for (int i = 0; i < 4;i++) {
for (int j = 0;j < 3;j++) {
if (map[i][j] == 'A') {
monsind[0][0] = i;
monsind[0][1] = j;
}
else if (map[i][j] == 'C') {
monsind[1][0] = i;
monsind[1][1] = j;
}
else if (map[i][j] == 'D') {
monsind[2][0] = i;
monsind[2][1] = j;
}
}
}
}
void movto(int dir) { // right 0
int dy, dx;
int* y, * x;
for (int k = 0; k < 3;k++) {
y = &monsind[k][0];
x = &monsind[k][1];
dy = direct[dir][0] + *y;
dx = direct[dir][1] + *x;
if (dy < 0 || dy >3) break;
if (dx < 0 || dx >2) break;
char a = map[dy][dx];
if ( a>= 'A' && a <= 'Z') break;
if (map[dy][dx] == '#')break;
//cout << dy << " " << dx << " " << endl << endl;
map[dy][dx] = map[*y][*x];
map[*y][*x] = '_';
monsind[k][0] = dy;
monsind[k][1] = dx;
}
}
int main() {
for (int i = 0; i < 4;i++) {
cin >> map[i];
}
// # 은 장애물 A D C는 몬스터
findmonsind();
// ADC 위치 확인
//right (,+1);
for (int x = 0; x <4;x++) {
movto(x);
}
movto(0);
for (int i = 0; i < 4;i++) {
for (int j = 0; j < 3;j++) {
cout << map[i][j];
}cout << endl;
}
}
입력 예제
_A_
#_D
C_#
#__
출력 결과
__A
#_D
_C#
#__
반응형
'C언어 > 문제풀다 하나씩' 카테고리의 다른 글
순서 나열하기 간단 (0) | 2020.05.09 |
---|---|
트리 구조 (0) | 2020.05.08 |
넣었다가 다시 값 빼기 그래프 간단 (0) | 2020.05.08 |
두 문자열에서 같은 단어 찾기 (0) | 2020.05.01 |
while(out조건 써보기 ) 지렁이 수명문제 (0) | 2020.05.01 |
3칸짜라 톱니바퀴 네개 돌리기 세로로.. 간단 (0) | 2020.05.01 |
간단 합병정렬 (0) | 2020.05.01 |
재귀 프린트 예시1 (0) | 2020.05.01 |