본문 바로가기
카테고리 없음

프로그래머스 programers 키패드누르기


const keypad = {
    left:
        [1, 4, 7, -1],
    middle:
        [2, 5, 8, 0],
    right:
        [3, 6, 9, -1]
}

let left = {
    number: -1,
    y: 3
};
let right =
{
    number: -1,
    y: 3
};


function solution(numbers, hand) {
    let answer = ''
    hand = hand === "right" ? "R" : "L"
    console.log('hand :', hand)
    numbers.forEach((number) => {
        console.log('----------------------------')
        console.log('number :', number)
        if (keypad.left.includes(number)) {
            left.number = number;
            left.y = keypad.left.indexOf(number)
            return answer += "L";
        } else if (keypad.right.includes(number)) {
            right.number = number;
            right.y = keypad.right.indexOf(number)
            return answer += "R"
        }





        middleIndex = keypad.middle.indexOf(number);
        console.log('middleIndex :', middleIndex)
        let leftDiff = Math.abs(left.y - middleIndex);
        let rightDiff = Math.abs(right.y - middleIndex);


        console.log('leftDiff :', leftDiff)
        console.log('rightDiff :', rightDiff)

        console.log('left.number : ', left.number)

        leftIndex = keypad.middle.indexOf(left.number)
        if (leftIndex == -1) leftDiff += 1;
        rightIndex = keypad.middle.indexOf(right.number)
        if (rightIndex == -1) rightDiff += 1;

        console.log('leftIndex :', leftIndex)
        console.log('rightIndex :', rightIndex)

        console.log()

        console.log('leftDiff :', leftDiff)
        console.log('rightDiff :', rightDiff)
        console.log('----------------------------')

        if (leftDiff === rightDiff) {
            if (hand === "L") {
                left.number = number;
                left.y = keypad.middle.indexOf(number)
            } else {
                right.number = number;
                right.y = keypad.middle.indexOf(number)
            }
            return answer += hand
        }
        else if (leftDiff < rightDiff) {
            left.number = number;
            left.y = keypad.middle.indexOf(number)
            return answer += "L"
        }
        else {
            right.number = number;
            right.y = keypad.middle.indexOf(number)
            return answer += "R"
        }


    });


    return answer;
}
// const res = solution([1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5], "right");
const res1 = solution([7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2], "left");
// console.log("res :", res);
console.log("res1 :", res1);

 

콘솔 로그는 디버그용