class Solution {
public int[] solution(String[] keyinput, int[] board) {
int x = 0;
int y = 0;
for(int i=0; i<keyinput.length; i++) {
if(x > board[0]/2) x = board[0]/2;
if(x < -(board[0]/2)) x = -(board[0]/2);
if(y > board[1]/2) y = board[1]/2;
if(y < -(board[1]/2)) y = -(board[1]/2);
switch(keyinput[i]) {
case "left" : x--; break;
case "right" : x++; break;
case "up" : y++; break;
case "down" : y--; break;
}
}
if(x > board[0]/2) x = board[0]/2;
if(x < -(board[0]/2)) x = -(board[0]/2);
if(y > board[1]/2) y = board[1]/2;
if(y < -(board[1]/2)) y = -(board[1]/2);
int[] answer = {x,y};
return answer;
}
}
if문으로 범위를 넘었는지 체크하는게 중복되니 좋지않은 코드같다.
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;
}
x = z - y ? t : f
이런식을 쓸 수 있다.now[0] -= now[0]>-(board[0]/2)?1:0
따라서 이걸 이용해서 이동할때마다 체크한다.