function solution(numbers, hand) {
var answer = '';
let left = '*';
let right = '#';
for (let i of numbers) {
if (i === 1 || i === 4 || i === 7) {
answer += 'L';
left = i;
}else if (i === 3 || i === 6 || i === 9) {
answer += 'R';
// Right에서도 손가락 위치값을 1, 4, 7로 맞추기 위해 -2
right = i - 2;
} else { // 0 2 5 8 일 때
// 왼손 오른손의 위치를 계산 - 2차원 배열로 return 받음
let l = findKey(left);
let r = findKey(right);
console.log(r, l)
// // 0 2 5 8의 위치값도 계산 되어 나옴
let middle = findKey(i);
// 손위치와 눌러야할 키패드 거리 구하기
// 각 2차원 배열의 인덱스의 합을 계산
let distanceR = Math.abs(r[0] - middle[0]) + Math.abs(r[1] - middle[1]);
let distanceL = Math.abs(l[0] - middle[0]) + Math.abs(l[1] - middle[1]);
if (distanceR === distanceL) { // 거리가 같다면 오른손잡이 -> 'R', 왼손잡이 -> 'L'
hand === 'right' ? (right = i, answer += 'R') : (left = i, answer += 'L');
} else if(distanceL < distanceR) { // 오른손의 거리가 더 멀다면
answer += 'L';
left = i;
} else { // 왼손의 거리가 더 멀다면
answer += 'R';
right = i;
}
}
}
return answer;
}
// 위치 계산함수
function findKey(key) {
let keypad = [[1, 2, 3], [4, 5, 6], [7, 8, 9], ['*', 0, '#']];
for (let i = 0; i < 4; i++) {
for (let j = 0; j < 3; j++) {
if (keypad[i][j] === key) {
return [i, j];
}
}
}
}