🖇️ 문제 링크
📝 문제 분석
키패드의 번호들마다 좌표를 부여합니다.
1, 4, 7번을 눌러야 한다면 왼손, 3, 6, 9번을 눌러야 한다면 오른손을 사용하고 나머지를 누를 때는 현재 왼손과 오른손 중 가까운 손으로 누릅니다.
⌨️ 코드
class Solution {
public String solution(int[] numbers, String hand) {
StringBuilder sb = new StringBuilder();
int[][] button = {{3, 1}, {0, 0}, {0, 1}, {0, 2}, {1, 0}, {1, 1}, {1, 2}, {2, 0}, {2, 1}, {2, 2}};
int[] L = {3, 0}, R = {3, 2};
for(int num : numbers) {
int[] next = button[num];
if(num == 1 || num == 4 || num == 7) {
sb.append("L");
L = next;
} else if(num == 3 || num == 6 || num == 9) {
sb.append("R");
R = next;
} else {
int ld = Math.abs(next[0] - L[0]) + Math.abs(next[1] - L[1]);
int rd = Math.abs(next[0] - R[0]) + Math.abs(next[1] - R[1]);
if(ld == rd) {
if(hand.equals("right")) {
sb.append("R");
R = next;
}
else {
sb.append("L");
L = next;
}
} else if(ld > rd) {
sb.append("R");
R = next;
} else {
sb.append("L");
L = next;
}
}
}
return sb.toString();
}
}
Uploaded by Notion2Tistory v1.1.0