1
+ package `3week`.acw
2
+
3
+ const val king= 3
4
+ const val stone= 2
5
+ class 킹{
6
+ lateinit var input: List <String >
7
+ var chessMap= Array (8 ){Array (8 ){0 } }
8
+
9
+ val direction= hashMapOf<String ,Pair <Int ,Int >>(
10
+ Pair (" R" ,Pair (0 ,1 )),
11
+ Pair (" L" ,Pair (0 ,- 1 )),
12
+ Pair (" B" ,Pair (1 ,0 )),
13
+ Pair (" T" ,Pair (- 1 ,0 )),
14
+ Pair (" RT" ,Pair (- 1 ,1 )),
15
+ Pair (" LT" ,Pair (- 1 ,- 1 )),
16
+ Pair (" RB" ,Pair (1 ,1 )),
17
+ Pair (" LB" ,Pair (1 ,- 1 ))
18
+ )
19
+
20
+
21
+ fun validate (y : Int ,x : Int ):Boolean {
22
+ return ! (y< 0 || x< 0 || y> 7 || x> 7 )
23
+ }
24
+
25
+ fun solution (){
26
+ input= readln().split(" " )
27
+
28
+ var kingX= input[0 ][0 ]- ' A'
29
+ var kingY= 8 - input[0 ][1 ].digitToInt()
30
+
31
+ var stoneX= input[1 ][0 ]- ' A'
32
+ var stoneY= 8 - input[1 ][1 ].digitToInt()
33
+
34
+ val N = input[2 ].toInt()
35
+
36
+ chessMap[kingY][kingX]= king
37
+ // king
38
+
39
+ chessMap[stoneY][stoneX]= stone
40
+ // stone
41
+
42
+ for ( i in 0 until N ){
43
+ val mv= readln()
44
+
45
+ val ny= kingY+ direction[mv]!! .first
46
+ val nx= kingX+ direction[mv]!! .second
47
+ if (! validate(ny,nx)){
48
+ continue
49
+ }// 유효성 check
50
+
51
+ if (chessMap[ny][nx]== stone){
52
+ val nsy= stoneY+ direction[mv]!! .first
53
+ val nsx= stoneX+ direction[mv]!! .second
54
+
55
+ if (! validate(nsy,nsx)){
56
+ continue
57
+ }// 돌이 자리를 비켜주지 못할 때
58
+ else {
59
+ chessMap[stoneY][stoneX]= 0
60
+ chessMap[kingY][kingX]= 0
61
+
62
+ chessMap[nsy][nsx]= stone
63
+ chessMap[ny][nx]= king
64
+
65
+ kingY= ny
66
+ kingX= nx
67
+
68
+ stoneY= nsy
69
+ stoneX= nsx
70
+ // 이동시켜주기
71
+
72
+ continue
73
+ }
74
+
75
+ }// 가는 자리에 돌이 있을 때
76
+
77
+
78
+ chessMap[kingY][kingX]= 0
79
+ chessMap[ny][nx]= king
80
+ kingY= ny
81
+ kingX= nx
82
+ // 아무문제 없으면 king만 이동
83
+
84
+ }
85
+
86
+
87
+
88
+ println (" ${(kingX+ ' A' .toInt()).toChar()}${8 - kingY} \n ${(stoneX+ ' A' .toInt()).toChar()}${8 - stoneY} " )
89
+
90
+ }
91
+ }
92
+
93
+
94
+ fun main (){
95
+ val sol = 킹()
96
+ sol.solution()
97
+ }
0 commit comments