#include <bits/stdc++.h>
using namespace std;
string kingPos, stonePos, direction;
int cnt, kx, ky, sx, sy;
int dx[8]={1, -1, 0, 0, 1, -1, 1, -1};
int dy[8]={0, 0, -1, 1, 1, 1, -1, -1};
bool attempmove(int dir){
int mkx = kx + dx[dir];
int mky = ky + dy[dir];
int msx = sx;
int msy = sy;
if(mkx <0 || mkx >7 || mky <0 || mky>7){
return false;
}
if(mkx == msx && mky== msy){
msx += dx[dir];
msy += dy[dir];
if(msx <0 || msx >7 || msy <0 || msy>7){
return false;
}
}
kx = mkx; ky= mky;
sx = msx; sy = msy;
return true;
}
int main(){
//1. 왕, 돌 위치 입력 받기
cin >> kingPos >> stonePos >> cnt;
//2. 왕, 돌 위치 -> 인덱스화
kx = kingPos[0] - 'A'; //열
ky = kingPos[1] - '1'; //행
sx = stonePos[0] - 'A';
sy = stonePos[1] - '1';
//3. 왕, 돌 움직임
for(int i=0; i<cnt; i++){
cin >> direction;
if(direction == "R"){
if(!attempmove(0)) continue;
}else if(direction == "L"){
if(!attempmove(1)) continue;
}else if(direction == "B"){
if(!attempmove(2)) continue;
}else if(direction == "T"){
if(!attempmove(3)) continue;
}else if(direction == "RT"){
if(!attempmove(4)) continue;
}else if(direction == "LT"){
if(!attempmove(5)) continue;
}else if(direction == "RB"){
if(!attempmove(6)) continue;
}else if(direction == "LB"){
if(!attempmove(7)) continue;
}
}
//4. 왕, 돌 인덱스 -> 문자화
cout << char('A' + kx) << char('1' + ky) << "\n";
cout << char('A' + sx) << char('1' + sy) << "\n";
return 0;
}
1. 입력받은 왕과 돌의 위치를 배열의 인덱스로 나타내고
2. 인덱스로 왕, 돌을 이동시킨 후
3. 왕, 돌의 인덱스를 A1, B2 등으로 문자화한다.
'코테' 카테고리의 다른 글
백준 2979번 - 트럭주차 (0) | 2023.08.13 |
---|---|
백준 1138번 - 한줄로 서기 (0) | 2023.08.13 |
백준 1284번-집 주소 (0) | 2023.08.13 |
백준 1268번 - 임시반장 정하기 (0) | 2023.08.13 |
백준 1264번-모음의 개수 (0) | 2023.08.07 |