class Solution {
public String solution(int[] numbers, String hand) {
StringBuilder answer = new StringBuilder();
int left = 10;
int right = 12;
for (int number : numbers) {
if (number == 1 || number == 4 || number == 7) {
answer.append("L");
left = number;
} else if (number == 3 || number == 6 || number == 9) {
answer.append("R");
right = number;
} else {
if(number == 0) number = 11;
int leftInstance = getInstance(number, left);
int rightInstance = getInstance(number, right);
if (leftInstance < rightInstance) {
answer.append("L");
left = number;
} else if (leftInstance == rightInstance) {
if(hand.equals("left")){
answer.append("L");
left = number;
} else {
answer.append("R");
right = number;
}
} else {
answer.append("R");
right = number;
}
}
}
return answer.toString();
}
public int getInstance(int number, int lastNum) {
int x = Math.abs(((lastNum - 1) / 3) - ((number - 1) / 3));
int y = Math.abs(((lastNum - 1) % 3) - ((number - 1) % 3));
return x + y;
}
}
소감
- 문제를 풀어나가는 방법을 잡는데 어려움을 겪는다.
- 좌표를 사용해서 해당 거리를 구할 수 있는 것 까지는 확인하였으나, 좌표값을 통해서 어떻게 해야할지를 꽤 오랫동안 고민했다.
- 거리를 계산할때, 절대값을 사용해야하는 것을 알았으나,
Math.abs()
함수를 '아 그거 뭐였지..' 하다가 한참 헤맸다.