/* 캐릭터의 좌표
* 게임에는 up, down, left, right 방향키가 있으며
* 각 키를 누르면 위, 아래, 왼쪽, 오른쪽으로 한 칸씩 이동합니다.
* [0,0]에서 up을 누른다면 캐릭터의 좌표는 [0, 1],
* down을 누른다면 [0, -1],
* left를 누른다면 [-1, 0],
* right를 누른다면 [1, 0]입니다.
* 입력한 방향키의 배열 keyinput와 맵의 크기 board이 매개변수로 주어집니다.
* 캐릭터는 항상 [0,0]에서 시작할 때 키 입력이 모두 끝난 뒤에
* 캐릭터의 좌표 [x, y]를 return
*
* [0, 0]은 board의 정 중앙에 위치합니다.
* board의 가로 크기가 9라면 캐릭터는 왼쪽으로 최대 [-4, 0]까지
* 오른쪽으로 최대 [4, 0]까지 이동할 수 있습니다.
*
* keyinput board result
* ["left", "right", "up", "right", "right"] [11, 11] [2, 1]
* ["down", "down", "down", "down", "down"] [7, 9] [0, -4]
*/
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 | public class programmer_0_85 { static String[] a1 = {"left", "right", "up", "right", "right"}; static int[] b1 = {11, 11}; static String[] a2 = {"down", "down", "down", "down", "down"}; static int[] b2 = {7, 9}; public int[] solution(String[] keyinput, int[] board) { int[] answer = {0,0}; int[] max = {(board[0]-1)/2 , (board[1]-1)/2}; for(String n : keyinput){ switch(n){ case "right" : if(max[0] > answer[0]) answer[0] = answer[0] + 1; break; case "left" : if(-max[0] < answer[0]) answer[0] = answer[0] - 1; break; case "up" : if(max[1] > answer[1]) answer[1] = answer[1] + 1; break; case "down" : if(-max[1] < answer[1]) answer[1] = answer[1] - 1; break; } System.out.println("##" + answer[0] + " , " + answer[1]); } for(int i : answer) System.out.println(i); return answer; } public static void main(String args[]){ programmer_0_85 t = new programmer_0_85(); System.out.println("---------------------------------------"); System.out.println("result = " + t.solution(a1,b1)); System.out.println("---------------------------------------"); System.out.println("result2 = " + t.solution(a2,b2)); System.out.println("---------------------------------------"); } } | cs |