1063 번 킹.

2022. 12. 23. 19:10boj

https://www.acmicpc.net/problem/1063

 

1063번: 킹

8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는

www.acmicpc.net

문제를 여러번 시도하였는데 아직 정확하게 동작이 같더라도 에러가 발생하는 경우가 있었다.

무슨 문제인지 아직 확인 할 수는 없었으나 일단 통과한 코드를 가지고 

설명하겠다.

위치의 두값을 기준으로 왼쪽은 좌 우 오른쪽은 위아래를 나타내는 로직이고 

여기서 입력값을 기준으로 킹을 움직이게 된다. 만약 

여기서 로직을 타지 못한다면 입력을 무시하고 넘어가는 로직을 동작시키면 된다.

 

#include <iostream>

using namespace std;

int k[2];
int s[2];
int _x[] = {0, 0, -1, 1, 1, 1, -1, -1};
int _y[] = {1, -1, 0, 0, 1, -1, 1, -1};

int switchMv(string str)
{
    if (str == "R") {
        return (0);
    } else if (str == "L") {
        return (1);
    } else if (str == "B") {
        return (2);    
    }else if (str == "T") {
        return (3);    
    }else if (str == "RT") {
        return (4);    
    }else if (str == "LT") {
        return (5);    
    }else if (str == "RB") {
        return (6);    
    } else if (str == "LB") {
        return (7);    
    }
    return (-1);
}

int main()
{
    char c;
    int n;

    cin >> c >> n;
    k[1] = c - 'A';
    k[0] = n - 1;
    cin >> c >> n;
    s[1] = c - 'A';
    s[0] = n - 1;
    cin >> n;
    for (int i = 0; i < n; ++i) {
        string mv;
        cin >> mv;
        int x, y, sx, sy;
        int cnt = switchMv(mv); 
        x = k[1] + _y[cnt];
        y = k[0] + _x[cnt]; 
        sx = s[1] + _y[cnt]; 
        sy = s[0] + _x[cnt];
        cout << (char)(x + 'A') << y + 1 << endl;
        cout << (char)(s[1] + 'A') << s[0] + 1 << endl;
        if (x < 0 || x >= 8 || y < 0 || y >= 8)
            continue ;
        if (x == s[1] && y == s[0]){
            if (sx < 0 || sx >= 8 || sy < 0 || sy >= 8)
                continue ;
            s[1] = sx;
            s[0] = sy;
        }
        k[1] = x;
        k[0] = y;

    }
    cout << (char)(k[1] + 'A') << k[0] + 1 << endl;
    cout << (char)(s[1] + 'A') << s[0] + 1 << endl;
    return 0;
}

'boj' 카테고리의 다른 글

2579 계단 오르기  (0) 2022.12.24
7576 tomato  (2) 2022.12.24
1697 숨바꼭질.  (0) 2022.12.21
1021 회전하는 큐.  (0) 2022.12.21
수열의 합 1024  (0) 2022.12.21