๊ด€๋ฆฌ ๋ฉ”๋‰ด

Algo ์“ฐ์ž

[Programmers] (Javascript) ๋‰ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋ณธ๋ฌธ

๐Ÿ’ฏ CodingTest/Programmers

[Programmers] (Javascript) ๋‰ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง

S.Honey 2022. 4. 25. 14:40

https://programmers.co.kr/learn/courses/30/lessons/17677

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - [1์ฐจ] ๋‰ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง

๋‰ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง ์—ฌ๋Ÿฌ ์–ธ๋ก ์‚ฌ์—์„œ ์Ÿ์•„์ง€๋Š” ๋‰ด์Šค, ํŠนํžˆ ์†๋ณด์„ฑ ๋‰ด์Šค๋ฅผ ๋ณด๋ฉด ๋น„์Šท๋น„์Šทํ•œ ์ œ๋ชฉ์˜ ๊ธฐ์‚ฌ๊ฐ€ ๋งŽ์•„ ์ •์ž‘ ํ•„์š”ํ•œ ๊ธฐ์‚ฌ๋ฅผ ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค. Daum ๋‰ด์Šค์˜ ๊ฐœ๋ฐœ ์—…๋ฌด๋ฅผ ๋งก๊ฒŒ ๋œ ์‹ ์ž…์‚ฌ์› ํŠœ๋ธŒ

programmers.co.kr

 

โ–ถ ์ฝ”๋“œ : 

function divide(p)
{
    let temp = [];
    let reg = new RegExp(/[a-z][a-z]/);

    for (let i =0; i < p.length-1; i ++){
        var data = p.slice(i,i+2);

        if (reg.test(data)){
            temp.push(data);
        }
    }
    return temp
}


function solution(str1, str2) {
    var answer = 0;
    let strD1 = divide(str1.toLowerCase()); 
    let strD2 = divide(str2.toLowerCase());
    let temp = strD2.slice();//strD2๋ฅผ ๊นŠ์€ ๋ณต์‚ฌ

    let intersection = [...strD1].filter(x => {
        if (temp.includes(x))
        {
            temp.splice(temp.indexOf(x),1)
            return true;
        }
        else{
            return false;
        }
    });

    let tempInter = intersection.slice();
    //intersection์„ ๊นŠ์€ ๋ณต์‚ฌ

    let total = [...strD1].filter(x => {
        if (tempInter.includes(x))
        {
            tempInter.splice(tempInter.indexOf(x),1);
            return false;
        }
        else
        {
            return true;
        }
    }).concat(strD2);

    
    if (total.length !== 0){
        answer = (intersection.length/total.length) * 65536;
    }
    else{
        answer = 65536;
    }

    return Math.floor(answer);
}

 

โ–ถ ๋ฌธ์ œํ’€์ด : 

- ์ตœ๊ทผ Javascript๋กœ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ์ค€๋น„ํ•˜๋ฉฐ ๋ฌธ์ž์—ด ํŒŒ์‹ฑ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ํ’€์–ด์™”๋‹ค.

- ๊ธฐ์กด Python์„ ์ด์šฉํ•ด ๋ฌธ์ž์—ด ํŒŒ์‹ฑ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•ด ์™”์—ˆ๋Š”๋ฐ JS์—์„œ๋Š” ํŒŒ์ด์ฌ๊ณผ ๊ฐ™์€ ์ธ๋ฑ์Šค ์Šฌ๋ผ์ด์‹ฑ์€ ์–ด๋ ค์› ๊ธฐ์— ๊ฐ„ํ˜น ๋‚œํ•ดํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค.

- JS๋กœ ๋ฌธ์ž์—ด ํŒŒ์‹ฑ์„ ํ•  ๋•Œ ์ •๊ทœํ‘œํ˜„์‹์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ๊ณ , ํ•ด๋‹น ๋ฌธ์ œ์—๋„ ์ ์šฉํ•ด๋ณด์•˜๋‹ค. 

- divide() ํ•จ์ˆ˜์—์„  ๋ฌธ์ž์—ด์„ ๋‘๊ฐœ์”ฉ ์ž๋ฅด๊ณ , ์ž˜๋ผ์ง„ ๋ฌธ์ž์—ด์ด ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”์ง€๋ฅผ ์ •๊ทœํ‘œํ˜„์‹์„ ์ด์šฉํ•ด ํ™•์ธํ•œ๋‹ค. 

- ์ด๋•Œ matchํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ ์ดˆ๊ธฐ ์ •๊ทœํ‘œํ˜„์‹์— 'g' ์˜ต์…˜์„ ๋„ฃ์–ด ๋ฌธ์ž์—ด ์ „์—ญ์— ๋Œ€ํ•ด ๊ฒ€์‚ฌ๋ฅผ ์ง„ํ–‰ํ•˜์˜€๋‹ค. ์ด๋•Œ ์ด์ƒํ•˜๊ฒŒ true false๊ฐ’์ด ์ผ๊ด€๋˜์ง€ ์•Š๊ฒŒ ์„ค์ •๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ ์ „์—ญ ์˜ต์…˜์ธ 'g'๋ฅผ ์ œ๊ฑฐํ–ˆ์„๋•Œ์—๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋‹ค. 

- ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€๊ฐ€ ๋” ํ•„์š”ํ•  ๋“ฏํ•˜๋‹ค. 

- ๋˜ํ•œ ํ•ด๋‹น ๋ฌธ์ œ์—์„œ๋Š” ๋‹ค์ค‘์ง‘ํ•ฉ์ด๋ผ๋Š” ๊ฐœ๋…์ด ๋“ฑ์žฅํ•œ๋‹ค. ๋‹ค์ค‘ ์ง‘ํ•ฉ ๊ฐœ๋…๊ณผ ๊ด€๋ จํ•ด์„œ ์ฒ˜์Œ ์ฝ”๋“œ๋ฅผ ์ž˜๋ชป ์ž‘์„ฑํ–ˆ์—ˆ๋‹ค.

- ์ด๋กœ ์ธํ•ด ๋ฌธ์ž์—ด๋“ค์˜ ๊ต์ง‘ํ•ฉ๊ณผ ํ•ฉ์ง‘ํ•ฉ์„ ์ƒ๊ฐํ•˜๊ธฐ ์–ด๋ ค์›Œ ์กฐ๊ธˆ ๋ณต์žกํ•˜๊ฒŒ๋‚˜๋งˆ ๊ต์ง‘ํ•ฉ๊ณผ ํ•ฉ์ง‘ํ•ฉ์„ ๊ตฌํ˜„ํ•œ ๋“ฏํ•˜๋‹ค.

- ๊ต์ง‘ํ•ฉ => intersecion , ํ•ฉ์ง‘ํ•ฉ => total