π λ¬Έμ
π μμ΄λμ΄
ꡬνλ¬Έμ λ‘ λ°λ‘λ₯Ό μ μκ°ν΄μΌ νλ λ¬Έμ μΈ κ² κ°λ€.
λ°©ν₯μ λ¬Έμλ‘ μ λ ₯λ°μμ μ΄ λΆλΆμ enumμΌλ‘ μ²λ¦¬νλλ° hash λ±μ μ΄μ©νλ λ°©λ²μ΄ λ λΉ λ₯Ό κ² κ°λ€.
λν, νκ³Ό μ΄μ μμμ μ΄λν λμλ°©ν₯μ κ³ λ €ν΄μ λ¬Έμ λ₯Ό νμ΄μΌ νλ€(ν·κ°λ¦°λ€..)
λν νμ κ°μνλ λ°©ν₯μΌλ‘ 1~8κΉμ§ μμ§λ§ μ΄μ A~Hλ‘ [1,8] , [A, H] λ²μλ₯Ό 체ν¬ν΄μΌ νλ€.
νμ΄μμ.
1. νΉμ μμ§μ΄κ³ νΉμ μ΄λμ΄ λ²μλ₯Ό λμ΄κ° κ²½μ° λμ΄κ°λ€.
2. νΉμ΄ μμ§μΈ μμΉκ° λμ΄ μλ μμΉλΌλ©΄ λμ μ΄λμν¨ κ²½μ°λ₯Ό νμΈνλ€.
2.1. λμ΄ μλ μμΉκ° λ²μλ₯Ό λ²μ΄λλ©΄ λμ΄κ°λ€.
2.2 λμ μ΄λμ΄ λ²μ μμ μμΌλ©΄ λμ μμΉλ₯Ό μ λ°μ΄νΈνλ€.
3. νΉμ μμΉλ₯Ό μ λ°μ΄νΈνλ€.
π νμ΄
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private enum Direction {
R(0, 1), L(0, -1), B(-1, 0), T(1, 0),
RT(1, 1), LT(1, -1), RB(-1, 1), LB(-1, -1),
;
private final int mvCol;
private final int mvRow;
Direction(int mvRow, int mvCol) {
this.mvRow = mvRow;
this.mvCol = mvCol;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
int[] king = getInput(st.nextToken());//col,row
int[] stone = getInput(st.nextToken());
int[] tempKing, tempStone;
int cmdCnt = Integer.parseInt(st.nextToken());
while (cmdCnt-- > 0) {
String cmd = br.readLine();
tempKing = move(cmd, king);
if (isOverRange(tempKing)) continue;//νΉμ΄ λ²μλ₯Ό λμ΄κ°
if (tempKing[0] == stone[0] && tempKing[1] == stone[1]) {//νΉ,λ κ°μ΄ μμ
tempStone = move(cmd, stone);
if (isOverRange(tempStone)) continue;
stone = tempStone;
}
king = tempKing;
}
sb.append(print(king)).append("\n");
sb.append(print(stone)).append("\n");
System.out.println(sb);
}
private static int[] getInput(String input) {
return new int[]{input.charAt(0) - 'A', input.charAt(1) - '1'};
}
private static String print(int[] map) {
return Character.toString(map[0] + 'A') + (map[1] + 1);
}
private static boolean isOverRange(int[] temp) {
return temp[0] < 0 || temp[1] < 0 || 8 <= temp[0] || 8 <= temp[1];
}
private static int[] move(String cmd, int[] map) {//κ°λ‘μ€ , μΈλ‘μ€
Direction direction = Direction.valueOf(cmd);
return new int[]{map[0] + direction.mvCol, map[1] + direction.mvRow};
}
}
'λ°±μ€(boj)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JAVA]2240 μλλ무, 골λ 5, dp (0) | 2023.06.02 |
---|---|
[JAVA]2847 κ²μμ λ§λ λμ€μ΄, 그리λ, μ€λ²4 (0) | 2023.06.01 |
[JAVA]17143 λμμ (1) | 2023.05.29 |
[JAVA]2758 λ‘λ(dfs μκ°μ΄κ³Ό/ dp) (0) | 2023.05.28 |
[λ°±μ€ Java] 4963 μ¬μ κ°μ (0) | 2023.05.26 |