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

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

문제

내가 작성한 정답

class Solution { public int[] solution(String[] keyinput, int[] board) { int[] an = {0, 0}, lim = {board[0]/2, board[1]/2}; for (String s : keyinput) { switch (s.charAt(0)) { case 'l' -> an[0]--; case 'r' -> an[0]++; case 'u' -> an[1]++; case 'd' -> an[1]--; } an[0] = Math.max(-lim[0], Math.min(lim[0], an[0])); an[1] = Math.max(-lim[1], Math.min(lim[1], an[1])); } return an; } }

다른 사람들의 정답

import java.lang.Math; class Solution { private String up = "up"; private String down = "down"; private String left = "left"; private String right = "right"; private int xPos = 0; private int yPos = 1; private int maxWidth = 0; private int maxHeight= 0; int[] answer = {0, 0}; public int[] solution(String[] keyinput, int[] board) { maxWidth = board[xPos] / 2; maxHeight = board[yPos] / 2; for (String moveKey : keyinput) { move(moveKey); } return answer; } private void move(String key) { if (up.equals(key)) { // up moveUp(); } else if (down.equals(key)) { // down moveDown(); } else if (left.equals(key)) { // left moveLeft(); } else { // right moveRight(); } } private void moveUp() { int top = Math.abs(maxHeight); if (answer[yPos] + 1 <= top) { answer[yPos]++; }; } private void moveDown() { int bottom = Math.abs(maxHeight) * -1; if (answer[yPos] - 1 >= bottom) { answer[yPos]--; }; } private void moveLeft() { int left = Math.abs(maxWidth) * -1; if (answer[xPos] - 1 >= left) { answer[xPos]--; }; } private void moveRight() { int right = Math.abs(maxWidth); if (answer[xPos] + 1 <= right) { answer[xPos]++; }; } } class Solution { public int[] solution(String[] keyinput, int[] board) { int[] now = {0, 0}; for (int i = 0; i < keyinput.length; i++){ if(keyinput[i].equals("left")) now[0] -= now[0]>-(board[0]/2)?1:0; else if(keyinput[i].equals("right")) now[0] += now[0]<(board[0]/2)?1:0; else if(keyinput[i].equals("down")) now[1] -= now[1]>-(board[1]/2)?1:0; else if(keyinput[i].equals("up")) now[1] += now[1]<(board[1]/2)?1:0; } return now; } }
Share article

silver