코딩테스트

[프로그래머스/javascript] 키보드 누르기(그리드 이용해서 다시풀것)

_서리__ 2023. 2. 1. 17:44
function solution(numbers, hand) {
    var answer = '';
    let leftThumb = '*';
    let rightThumb = '#';
    let bb ='';
    let aa='';
    for(let i=0;i<numbers.length;i++){
        if(numbers[i]===1||numbers[i]===4||numbers[i]===7){
            answer+='L';
            leftThumb = numbers[i]
        }else if(numbers[i]===3||numbers[i]===6||numbers[i]===9){
            answer+='R'
            rightThumb = numbers[i]
        }else{
            let leftThumbR = 0;
            let rightThumbR = 0;
            if(numbers[i]===leftThumb) leftThumbR = 0
            else{
            if(numbers[i]===0) numbers[i]=11
            if(leftThumb===0){
                leftThumb=11
            }
            if(leftThumb==='*'){
                leftThumb=10
            }

            if(leftThumb%3===1){
                let a = Math.abs(Number(numbers[i])-Number(leftThumb+1));
                leftThumbR++;
                while(a>0){
                    a=a-3;
                    leftThumbR++;
                }
            }else{
                let a = Math.abs(Number(numbers[i])-Number(leftThumb));
                while(a>0){
                    a=a-3;
                    leftThumbR++;
                }
            }
            if(numbers[i]===11) numbers[i]=0;
            }
            // //
            if(rightThumb===numbers[i]){
                rightThumbR = 0;
            }else{
            if(numbers[i]===0) numbers[i]=11
            if(rightThumb===0){
                rightThumb=11;
            }
            if(rightThumb==='#'){
                rightThumb=12;
            }
            if(rightThumb%3===0){
                let a = Math.abs(Number(numbers[i])-Number(rightThumb-1));
                rightThumbR++;
                while(a>0){
                    a=a-3;
                    rightThumbR++;
                }
            }else{
                let a = Math.abs(Number(numbers[i])-Number(rightThumb));
                while(a>0){
                    a=a-3;
                    rightThumbR++;
                }
            }
            if(numbers[i]===11) numbers[i]=0;
            }
            //
            aa+=leftThumbR
            bb+=rightThumbR
            //
            if(leftThumbR<rightThumbR){
                answer+='L'
                leftThumb = numbers[i];
            }else if(leftThumbR>rightThumbR){
                answer+='R';
                rightThumb = numbers[i]
            }else if(leftThumbR===rightThumbR){
               if(hand==='right'){
                   answer+='R';
                   rightThumb = numbers[i]
               }else{
                   answer+='L';
                   leftThumb = numbers[i]
               }
            }

        }
        //모르겠다...rightThumb나 leftThumb가 0인 경우, '*'인경우, '#'인경우 고려하면 될듯...
}

    return answer;
}

아주 복잡하게 풀었다 꼭 다시 풀어볼것