키패드 누르기 자바스크립트

HyosikPark·2020년 11월 16일
0

알고리즘

목록 보기
20/72
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일 경우의 좌표와 이전 왼손, 오른손 좌표를 비교하여 이동거리 계산

0개의 댓글