fork(4) download
  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. int N;
  7. char K[2], S[2], M[2];
  8.  
  9. // R, L, B, T, RT, LT, RB, LB
  10. int dr[] = { 0, 0, -1, 1, 1, 1, -1, -1 };
  11. int dc[] = { 1, -1, 0, 0, 1, -1, 1, -1 };
  12.  
  13. string out_k, out_s;
  14.  
  15. int main() {
  16. scanf("%s",K);
  17. scanf("%s",S);
  18. scanf("%d", &N);
  19.  
  20. int R = K[1] - '0'; int C = K[0] - 64; // 킹의 행, 열 정보 int로 변경
  21. int sR = S[1] - '0'; int sC = S[0] - 64; // 돌의 행, 열 정보 int로 변경
  22.  
  23. for (int i = 1; i <= N; i++) {
  24. M[0] = 0; M[1] = 0; // 방향 초기화
  25. scanf("%s", M);
  26. int len_M = strlen(M);
  27.  
  28. int nR, nC, nD;
  29. // 입력된 방향에 따른 킹의 위치 이동
  30. if (M[0] == 'R' && len_M == 1) {
  31. nR = R + dr[0]; nC = C + dc[0]; nD = 0;
  32. }
  33. else if (M[0] == 'L' && len_M == 1) {
  34. nR = R + dr[1]; nC = C + dc[1]; nD = 1;
  35. }
  36. else if (M[0] == 'B' && len_M == 1) {
  37. nR = R + dr[2]; nC = C + dc[2]; nD = 2;
  38. }
  39. else if (M[0] == 'T' && len_M == 1) {
  40. nR = R + dr[3]; nC = C + dc[3]; nD = 3;
  41. }
  42. else if (M[0] == 'R' && M[1] == 'T') {
  43. nR = R + dr[4]; nC = C + dc[4]; nD = 4;
  44. }
  45. else if (M[0] == 'L' && M[1] == 'T') {
  46. nR = R + dr[5]; nC = C + dc[5]; nD = 5;
  47. }
  48. else if (M[0] == 'R' && M[1] == 'B') {
  49. nR = R + dr[6]; nC = C + dc[6]; nD = 6;
  50. }
  51. else if (M[0] == 'L' && M[1] == 'B') {
  52. nR = R + dr[7]; nC = C + dc[7]; nD = 7;
  53. }
  54. // 만약 킹의 위치가 체스반 초과시 다음 명령 수행
  55. if (nR < 1 || nR > 8 || nC < 1 || nC > 8) {
  56. continue;
  57. }
  58. // 옮겨진 자리에서의 킹의 위치와 돌의 위치가 같은 경우
  59. if (nR == sR && nC == sC) {
  60. int s_nR = sR + dr[nD]; int s_nC = sC + dc[nD];
  61. if (s_nR < 1 || s_nR > 8 || s_nC < 1 || s_nC > 8) {
  62. continue;
  63. }
  64. // 돌의 위치 업데이트
  65. sR = s_nR; sC = s_nC;
  66. }
  67. // 킹의 위치 업데이트
  68. R = nR; C = nC;
  69. }
  70.  
  71. out_k += C + 64;
  72. out_s += sC + 64;
  73. out_k += to_string(R);
  74. out_s += to_string(sR);
  75. printf("%s\n", out_k.c_str());
  76. printf("%s\n", out_s.c_str());
  77.  
  78. return 0;
  79. }
Success #stdin #stdout 0s 4328KB
stdin
A1 A2 3
T
T
T
stdout
A2