맛있는감귤

BOJ : 1063 킹 본문

알고리즘/백준 알고리즘

BOJ : 1063 킹

맛있는감귤 2017. 4. 28. 02:24

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

이동하라는대로 이동시키고 

1. 킹 이동

2. 킹이 맵을 벗어남?

3. 안 벗어나면 돌맹이와 겹침?

4. 겹쳐서 돌맹이 이동시키는데 맵 벗어남?

5. 벗어나면 킹 원위치

반복

하면 된다. 

알파벳+숫자가 열행이기 때문에 순서 주의


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <iostream>
#include <string>
using namespace std;
 
int kr,kc,sr,sc;
int N;
 
bool cmp(int kr, int kc, int sr, int sc){
    if(kr==sr && kc==sc) return true;
    return false;
}
bool isOut(int r, int c){
    if(r < 1 || c < 1 || r > 8 || c > 8return true;
    return false;
}
int main(){
    char c;
    scanf(" %c",&c);
    kc=c-'A'+1;
    scanf("%d",&kr);
    scanf(" %c",&c);
    sc=c-'A'+1;
    scanf("%d",&sr);
    scanf("%d",&N);
    
    while(N--){
        string s;
        cin>>s;
        if(s=="R") {
            if(!isOut(kr, kc+1)) {
                kc++;
                if(cmp(kr, kc, sr, sc)){
                    if(!isOut(sr, sc+1)) sc++;
                    else kc--;
                }
            }
        }
        
        else if(s=="L") {
            if(!isOut(kr, kc-1)) {
                kc--;
                if(cmp(kr, kc, sr, sc)){
                    if(!isOut(sr, sc-1)) sc--;
                    else kc++;
                }
            }
        }
        
        else if(s=="B") {
            if(!isOut(kr-1, kc)) {
                kr--;
                if(cmp(kr, kc, sr, sc)){
                    if(!isOut(sr-1, sc)) sr--;
                    else kr++;
                }
            }
        }
        
        else if(s=="T") {
            if(!isOut(kr+1, kc)) {
                kr++;
                if(cmp(kr, kc, sr, sc)){
                    if(!isOut(sr+1, sc)) sr++;
                    else kr--;
                }
            }
        }
        
        else if(s=="RT") {
            if(!isOut(kr+1, kc+1)) {
                kr++, kc++;
                if(cmp(kr, kc, sr, sc)){
                    if(!isOut(sr+1, sc+1)) sr++,sc++;
                    else kr--, kc--;
                }
            }
        }
        
        else if(s=="LT") {
            if(!isOut(kr+1, kc-1)) {
                kr++, kc--;
                if(cmp(kr, kc, sr, sc)){
                    if(!isOut(sr+1, sc-1)) sr++,sc--;
                    else kr--, kc++;
                }
            }
        }
        
        else if(s=="RB") {
            if(!isOut(kr-1, kc+1)) {
                kr--, kc++;
                if(cmp(kr, kc, sr, sc)){
                    if(!isOut(sr-1, sc+1)) sr--, sc++;
                    else kr++, kc--;
                }
            }
        }
        
        else if(s=="LB") {
            if(!isOut(kr-1, kc-1)) {
                kr--, kc--;
                if(cmp(kr, kc, sr, sc)){
                    if(!isOut(sr-1, sc-1)) sr--, sc--;
                    else kr++, kc++;
                }
            }
        }
        printf("%c%d %c%d\n",kc+'A'-1,kr,sc+'A'-1,sr);
    }
    
    printf("%c%d\n",kc+'A'-1,kr);
    printf("%c%d\n",sc+'A'-1,sr);
}
cs

'알고리즘 > 백준 알고리즘' 카테고리의 다른 글

BOJ : 2169 로봇  (0) 2017.04.30
BOJ : 1173 운동  (0) 2017.04.29
BOJ : 1120 문자열  (0) 2017.04.28
BOJ : 1526 가장 큰 금민수  (0) 2017.04.28
BOJ : 1953 팀 배분  (2) 2017.04.28