- Published on
프로그래머스 2020 카카오 인턴십 키패드누르기
- Authors
- Name
- Deokgoo Kim
문제 풀이
시뮬레이션 문제입니다 난이도는 개인적으로 중이라고 생각합니다.
빠르게 발견한다면 쉽게 해결 할 것이고 해매면 시간이 많이 걸릴 것입니다.
function solution(numbers, hand) {
let answer = '';
const absolutLeft = [1, 4, 7];
const absoluteRight = [3, 6, 9];
const middle = [2, 5, 8, 11];
let leftHand = 10;
let rightHand = 12;
const judge = (num) => {
let tmp = num===0?11:num;
if(absolutLeft.includes(tmp)) {
leftHand = tmp;
answer+='L';
return;
}
if(absoluteRight.includes(tmp)) {
rightHand = tmp;
answer+='R';
return;
}
let leftPos, rightPos;
if(middle.includes(leftHand)) {
leftPos = Math.abs(leftHand - tmp)/3;
} else {
leftPos = Math.abs(tmp-(leftHand+1))/3 + 1;
}
if(middle.includes(rightHand)) {
rightPos = Math.abs(rightHand - tmp)/3;
} else {
rightPos = Math.abs(tmp-(rightHand-1))/3 + 1;
}
if(leftPos === rightPos) {
if(hand==='right') {
rightHand = tmp;
answer+='R';
} else {
leftHand = tmp;
answer+='L';
}
} else {
if(leftPos>rightPos) {
rightHand = tmp;
answer+='R';
} else {
leftHand = tmp;
answer+='L';
}
}
}
numbers.forEach(x => {
judge(x);
})
return answer;
}