스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다.
이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다.
맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다.
"left"
또는 "right"
입니다."left"
는 왼손잡이, "right"
는 오른손잡이를 의미합니다.*
, 0
, #
은 각각 10, 11, 12로 치환한다.function getAppHand(leftcur, rightcur, target, hand) {
let trg = target == 0 ? 11 : target;
let leftDist = Math.floor(Math.abs(leftcur-trg) / 3) + (Math.abs(leftcur-trg) % 3);
let rightDist = Math.floor(Math.abs(rightcur-trg) / 3) + (Math.abs(rightcur-trg) % 3);
let ret = '';
ret = leftDist > rightDist ? 'R' : leftDist < rightDist ? 'L' : hand == 'left' ? 'L' : 'R';
return ret;
}
function solution(numbers, hand) {
var answer = '';
let leftcur = 10;
let rightcur = 12;
for(let i=0; i<numbers.length; i++) {
//1, 4, 7
if((numbers[i] + 2) % 3 == 0) {
answer = answer.concat('L');
leftcur = numbers[i];
}
//3, 6, 9
else if ((numbers[i] % 3 == 0) && numbers[i] != 0) {
answer = answer.concat('R');
rightcur = numbers[i];
}
//2, 5, 8, 0
else {
let temp = getAppHand(leftcur, rightcur, numbers[i], hand)
answer = answer.concat(temp);
if(numbers[i] == 0) {
temp == 'R' ? rightcur = 11 : leftcur = 11;
}
else
temp == 'R' ? rightcur = numbers[i] : leftcur = numbers[i];
}
}
return answer;
}