function solution(numbers, hand) {
let answer = '';
let position = [
[3,1], [0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1],[2,2]
]
let left = [3,0];
let right = [3,2];
let leftNum = [1,4,7];
let rightNum = [3,6,9];
for(let i = 0; i < numbers.length; i++) {
let e = numbers[i]
if(leftNum.includes(e)) {
answer += 'L';
left = position[e];
continue;
}
if(rightNum.includes(e)) {
answer += 'R';
right = position[e];
continue;
}
let moveLeft = Math.abs(left[0] - position[e][0]) +
Math.abs(left[1] - position[e][1]);
let moveRight = Math.abs(right[0] - position[e][0]) +
Math.abs(right[1] - position[e][1]);
if (moveLeft > moveRight) {
answer += 'R';
right = position[e];
continue;
}
if (moveLeft < moveRight) {
answer += 'L';
left = position[e];
continue;
}
if(moveLeft === moveRight ) {
if(hand === "right") {
answer += 'R';
right = position[e];
continue;
}
answer+= 'L';
left = position[e];
continue;
}
}
return answer;
}
numbers 요소 각각의 숫자가 곧 x,y의 좌표가 될 수 있도록 position을 설정한다.
1,4,7은 왼손으로 입력하고 left좌표 설정
3,6,9는 오른손으로 입력하고 right 좌표 설정
2,5,8,0일 경우의 좌표와 이전 왼손, 오른손 좌표를 비교하여 이동거리 계산