๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ํ‚คํŒจ๋“œ ๋ˆ„๋ฅด๊ธฐ(67265)

๋ฌธ์ œ๋งํฌ

 

์ ‘๊ทผ ๋ฐฉ๋ฒ•

๋จผ์ € right์™€ left์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•ด์ฃผ๊ณ  ๋น„๊ต์  ์‰ฌ์šด [1,4,7] [3,6,9]์—์„œ์˜ ํ‚คํŒจ๋“œ ์›€์ง์ž„์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

ํ‚คํŒจ๋“œ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด๋กœ ์ƒ์„ฑํ•œ ๋’ค [2,5,8,0]์—์„œ์˜ ํ‚คํŒจ๋“œ ์›€์ง์ž„์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์ด๋•Œ hand๊ฐ€ left์ผ๋•Œ์™€ right์ผ๋•Œ๋ฅผ ๋‚˜๋ˆ  ์ƒ๊ฐํ•ด์•ผํ•œ๋‹ค.

 

ํ‚คํŒจ๋“œ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„  getDistance()ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ–ˆ๋‹ค.

ํ‚คํŒจ๋“œ ๊ฐ์ฒด์˜ value์ธ ๋ฐฐ์—ด์˜ ํ–‰,์—ด์˜ ๋บ„์…ˆ์— ์ ˆ๋Œ€๊ฐ’์„ ์ฃผ์–ด ์ฒ˜๋ฆฌํ–ˆ๋‹ค.

 

 

function getDistance(num1, num2){
    let keyObj = {1 : [3,0], 2 : [3,1], 3 : [3,2],
                  4 : [2,0], 5 : [2,1], 6 : [2,2],
                  7 : [1,0], 8 : [1,1], 9 : [1,2],
                  '*': [0,0], 0 : [0,1], '#' : [0,2]}
    return (Math.abs(keyObj[num1][0] - keyObj[num2][0]) + Math.abs(keyObj[num1][1] - keyObj[num2][1]))
}

function solution(numbers, hand) {
    var answer = [];
    let left = '*';
    let right = '#';
    
    numbers.map((num) => {
        if([1,4,7].includes(num)){
                answer.push("L"); 
                left = num;
        }else if([3,6,9].includes(num)) {
                answer.push("R"); 
                right = num;
        }else if([2,5,8,0].includes(num)){ 
            if(hand === "left") {
                if(getDistance(num,left) <= getDistance(num, right)){
                    answer.push("L");
                    left = num;
                }else{
                    answer.push("R");
                    right = num;
                }
            }else if(hand === "right"){
                if(getDistance(num,right) <= getDistance(num, left)){
                    answer.push("R");
                    right = num;
                }else{
                    answer.push("L");
                    left = num;
                }
            }
        }
    })

    answer = answer.join("")
    
    return answer;
}

 

 

 

์ฒ˜์Œ ์˜ค๋‹ต ์ฝ”๋“œ

1. ์ค‘์•™ ํ‚ค๋ณด๋“œ์˜ ๊ฑฐ๋ฆฌ ์—ฐ์‚ฐ์„ ๋„ˆ๋ฌด ๋‹จ์ˆœํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ๋‹ค.

2. ์ค‘์•™ ํ‚ค๋ณด๋“œ์—์„œ์˜ ์ด๋™์„ left, right ๋ฒ„ํŠผ์— ํ• ๋‹นํ•˜์ง€ ์•Š์•˜๋‹ค.

function solution(numbers, hand) {
    var answer = [];
    let left = 0;
    let right = 0;
    
    numbers.map((num) => {
        if([1,4,7].includes(num)){
                answer.push("L"); 
                left = num;
        }else if([3,6,9].includes(num)) {
                answer.push("R"); 
                right = num;
        }else{ 
            if(hand === "left") {
                Math.abs(num - left) <= Math.abs(num - right) ? answer.push("L") : answer.push("R")
            }else{
                Math.abs(num - right) <= Math.abs(num - left) ? answer.push("R") : answer.push("L")
            }
        }
    })

    answer = answer.join("")
    
    return answer;
}