-
[JAVA] BOJ 1063 킹개발자 취업/코딩테스트 준비 2023. 6. 10. 12:14반응형
1063번: 킹
8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는
www.acmicpc.net
정답 코드
- 8방 탐색 + 돌이랑 겹칠 시 예외 처리 필요
- 그 외는 기본적인 구현으로 해결
import java.io.*; import java.util.*; public class Main { static BufferedReader br; static StringTokenizer st; static int N; static int[] dy = { 0, 1, 1, 1, 0, -1, -1, -1 }; static int[] dx = { -1, -1, 0, 1, 1, 1, 0, -1 }; static int[] king, stone; public static void main(String[] args) throws IOException { br = new BufferedReader(new InputStreamReader(System.in)); st = new StringTokenizer(br.readLine(), " "); king = StringToPosition(st.nextToken()); stone = StringToPosition(st.nextToken()); N = Integer.parseInt(st.nextToken()); for (int i = 0; i < N; i++) { String command = br.readLine(); int pos = -1; if (command.equals("B")) { pos = 0; } else if (command.equals("RB")) { pos = 1; } else if (command.equals("R")) { pos = 2; } else if (command.equals("RT")) { pos = 3; } else if (command.equals("T")) { pos = 4; } else if (command.equals("LT")) { pos = 5; } else if (command.equals("L")) { pos = 6; } else if (command.equals("LB")) { pos = 7; } int[] nKing = new int[] { king[0] + dy[pos], king[1] + dx[pos] }; if (nKing[0] < 0 || nKing[1] < 0 || nKing[0] >= 8 || nKing[1] >= 8) { continue; } if (nKing[0] == stone[0] && nKing[1] == stone[1]) { int[] nStone = new int[] { stone[0] + dy[pos], stone[1] + dx[pos] }; if (nStone[0] < 0 || nStone[1] < 0 || nStone[0] >= 8 || nStone[1] >= 8) { continue; } stone[0] = nStone[0]; stone[1] = nStone[1]; } king[0] = nKing[0]; king[1] = nKing[1]; } System.out.println(positionToString(king)); System.out.println(positionToString(stone)); } private static String positionToString(int[] arr) { char y = (char) (arr[0] + 'A'); char x = (char) (arr[1] + '1'); char[] c = new char[] { y, x }; return new String(c); } private static int[] StringToPosition(String str) { int y = str.charAt(0) - 'A'; int x = str.charAt(1) - '1'; return new int[] { y, x }; } }
'개발자 취업 > 코딩테스트 준비' 카테고리의 다른 글
[Java] BOJ 17479 정식당 (0) 2023.06.11 [Java] BOJ 2866 문자열 잘라내기 (0) 2023.06.11 [Java] BOJ 11652 카드 (0) 2023.06.09 [Java] BOJ 1205 등수 구하기 (0) 2023.06.08 [Java] BOJ 16198 에너지 모으기 (0) 2023.06.07