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