https://www.acmicpc.net/problem/1063
이동할 수 있는 8개의 위치를 배열에 저장하는 게 핵심!
string p[8] = { "R","L","B","T","RT","LT","RB","LB" };
int dx[8] = {1,-1,0,0,1,-1,1,-1};
int dy[8] = {0,0,-1,1,1,1,-1,-1};
아스키코드 이용해서 문자 ↔️ 숫자 변환하는 거 기억하기
#include <iostream>
#include <string>
using namespace std;
int main() {
string p[8] = { "R","L","B","T","RT","LT","RB","LB" };
int dx[8] = {1,-1,0,0,1,-1,1,-1};
int dy[8] = {0,0,-1,1,1,1,-1,-1};
string k, s, pos;
int kx, ky, sx, sy;
int n;
cin >> k >> s >> n;
kx = k[0] - 'A' + 1;
ky = k[1] - '0';
sx = s[0] - 'A' + 1;
sy = s[1] - '0';
while (n--) {
cin >> pos;
for (int i = 0; i < 8; i++) {
if (pos == p[i]) {
int mx = kx + dx[i];
int my = ky + dy[i];
if (mx < 1 || my < 1 || mx > 8 || my > 8) break; //킹이 밖으로 나가는지 확인
if (mx == sx && my == sy) { //킹이 돌이랑 같은 위치인지 확인
int mmx = sx + dx[i];
int mmy = sy + dy[i];
if (mmx < 1 || mmy < 1 || mmx > 8 || mmy > 8) break; //돌이 밖으로 나가는지 확인
sx += dx[i]; //돌 이동
sy += dy[i]; //돌 이동
}
kx += dx[i]; //킹 이동
ky += dy[i]; //킹 이동
}
}
}
cout << (char)(kx + 'A' - 1) << ky << "\n";
cout << (char)(sx + 'A' - 1) << sy << "\n";
return 0;
}