문제
내가 작성한 정답
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