[알고리즘문제풀기] 캐릭터의 좌표

silver's avatar
Jan 24, 2025
[알고리즘문제풀기] 캐릭터의 좌표

문제

내가 작성한 오답

class Solution { public int[] solution(String[] keyinput, int[] board) { int[] answer = {0,0}; for(String s : keyinput){ if(s.equals("left")){ answer[0] -= 1; } else if (s.equals("right")) { answer[0] += 1; } else if (s.equals("up")) { answer[1] += 1; } else if (s.equals("down")) { answer[1] -= 1; } } if(Math.abs(answer[0])>board[0]/2){ if(answer[0] > 0){ answer[0] = board[0]/2; }else{ answer[0] = -board[0]/2; } } if(Math.abs(answer[1])>board[1]/2){ if(answer[1] > 0){ answer[1] = board[1]/2; }else{ answer[1] = -board[1]/2; } } return answer; } }

내가 작성한 정답

class Solution { public int[] solution(String[] keyinput, int[] board) { int[] answer = {0,0}; int widthMax = board[0]/2; int lengthMax = board[1]/2; for(String s : keyinput){ if(s.equals("left") && answer[0] > -widthMax){ answer[0] -= 1; } else if (s.equals("right") && answer[0] < widthMax) { answer[0] += 1; } else if (s.equals("up") && answer[1] < lengthMax) { answer[1] += 1; } else if (s.equals("down") && answer[1] > -lengthMax ) { answer[1] -= 1; } } return answer; } }

다른 사람들의 정답

class Solution { public int[] solution(String[] keyinput, int[] board) { int minX = board[0] / 2 * -1, maxX = board[0] / 2, minY = board[1] / 2 * -1, maxY = board[1] / 2; int curX = 0, curY = 0; for (String input : keyinput) { switch (input) { case "up": curY = Math.min(maxY, curY + 1); break; case "down": curY = Math.max(minY, curY - 1); break; case "left": curX = Math.max(minX, curX - 1); break; case "right": curX = Math.min(maxX, curX + 1); break; } } return new int[] { curX, curY }; } }
Share article

silver