public class KeyPad {
public String solution(int[] numbers, String hand) {
StringBuilder answer = new StringBuilder("");
int[][] xy = { { 4, 2 }, { 1, 1 }, { 1, 2 }, { 1, 3 }, { 2, 1 }, { 2, 2 }, { 2, 3 }, { 3, 1 }, { 3, 2 }, { 3, 3 } };
int left[] = { 4, 1 }, right[] = { 4, 3 }, next[];
for (int number : numbers) {
next = xy[number];
if (number == 1 || number == 4 || number == 7) {
answer.append("L");
left = next;
} else if (number == 3 || number == 6 || number == 9) {
answer.append("R");
right = next;
} else {
if (distance(left, next) > distance(right, next)) {
answer.append("R");
right = next;
} else if (distance(left, next) < distance(right, next)) {
answer.append("L");
left = next;
} else {
if (hand.equals("right")) {
answer.append("R");
right = next;
} else {
answer.append("L");
left = next;
}
}
}
}
return answer.toString();
}
private int distance(int[] xy1, int[] xy2) {
return Math.abs(xy1[0] - xy2[0]) + Math.abs(xy1[1] - xy2[1]);
}
}