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

Daehyunii's Dev-blog

06 ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณธ๋ฌธ

๐Ÿ“š Language & CS knowledge/Algorithm & Data structure

06 ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜

Daehyunii 2022. 8. 5. 00:02

6.1 ์„ ํ˜• ๊ฒ€์ƒ‰(์„ ํ˜• ํƒ์ƒ‰)
์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์€ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ–ˆ๋‹ค. ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ์˜ˆ๋ฅผ ๋“ค์–ด ํšŒ์›๊ฐ€์ž…์‹œ ์•„์ด๋””๊ฐ€ ์ค‘๋ณต๋˜๋Š” ๊ฒฝ์šฐ ์ค‘๋ณต๋œ ์•„์ด๋””๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธ์„ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ๋“ฑ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ จ์˜ ๊ณผ์ •์ด ๋ฐ”๋กœ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

์šฐ์„  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹ค์–‘ํ•œ ๊ฒ€์ƒ‰ ๊ด€๋ จ ๋ฉ”์„œ๋“œ๋“ค์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.
1. indexOf : ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด๋‚ด์— ํ•ด๋‹น ์š”์†Œ๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์š”์†Œ์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๊ณ , ์—†๋‹ค๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
2. includes : ๋ฐฐ์—ด ๋‚ด์— ํŠน์ • ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ๋ถˆ๋ฆฌ์–ธ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
3. find : ์ž์‹ ์„ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ˜ํ™˜๊ฐ’์ด true์ธ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
4. findIndex : ์ž์‹ ์„ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ˜ํ™˜๊ฐ’์ด true์ธ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐฐ์—ด ๊ฒ€์ƒ‰์„ ํ•  ๋•Œ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ผ๊นŒ? ์‚ฌ์‹ค ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๋ชจ๋“  ๊ฐœ๋ณ„ ํ•ญ๋ชฉ์„ ์ˆœ์„œ๋Œ€๋กœ ์‚ดํŽด๋ณด๋ฉด์„œ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์ธ์ง€ ํ™•์ธํ•˜๋Š”๊ฒŒ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ผ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•์ด ์„ ํ˜• ๊ฒ€์ƒ‰์ด๋‹ค. ์„ ํ˜• ๊ฒ€์ƒ‰์€ ๋ฐฐ์—ด์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด์„œ ๋งจ ๋์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๊ฐ ํ•ญ๋ชฉ์ด ์ฐพ๊ณ ์žํ•˜๋Š” ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ•˜๋‚˜ ํ•˜๋‚˜ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฒซ ๋ถ€๋ถ„์—์„œ ์‹œ์ž‘ํ•ด์„œ ๋๋ถ€๋ถ„์œผ๋กœ ์ด๋™ํ•˜๋ฉด์„œ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ•ญ๋ชฉ์„ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๋ฐ˜๋Œ€๋กœ ๋ ๋ถ€๋ถ„์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ฒซ ๋ถ€๋ถ„์œผ๋กœ ์ด๋™ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์„ ํ˜• ๊ฒ€์ƒ‰ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์œ„ํ•œ ์˜์‚ฌ์ฝ”๋“œ(๊ฐ•์‚ฌ๋‹˜์ด ์•Œ๋ ค์ฃผ์‹  ์˜์‚ฌ์ฝ”๋“œ์ž„)
1. ํ•จ์ˆ˜์— ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ์ธ์ˆ˜๋Š” ๋ฐฐ์—ด๊ณผ ํŠน์ • ๊ฐ’์„ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค.
2. ๋ฐฐ์—ด ์ „์ฒด์— ๋Œ€ํ•œ ๋ฃจํ”„๋ฅผ ๋งŒ๋“ ๋‹ค.
3. ํ˜„์žฌ ํ™•์ธ ์ค‘์ธ ๋ฐฐ์—ด ์š”์†Œ๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๊ฐ’๊ณผ ๋™์ผํ•œ์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.
4. ๋งŒ์•ฝ ํ™•์ธํ•˜๊ณ ์ž ํ•˜๋Š” ์š”์†Œ๊ฐ€ ๋ฐฐ์—ด๋‚ด์— ์žˆ๋‹ค๋ฉด ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.
5. ๋ฐ˜๋Œ€๋กœ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ํ•œ๋‹ค.

//์„ ํ˜• ๊ฒ€์ƒ‰
function elemSearch(arr,num){
    for(let i = 0 ; i < arr.length ; i++){
        if(arr[i] === num){
            return i;
        }
    }
    return -1
}

console.log(elemSearch([1,2,3,4,5],3));

์ฐธ๊ณ ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ธฐ๋ณธ ์ œ๊ณตํ•˜๋Š” ๋ฐฐ์—ด ๊ฒ€์ƒ‰ ๋ฉ”์„œ๋“œ๋“ค์€ ์„ ํ˜• ๊ฒ€์ƒ‰์œผ๋กœ ์ง€์›ํ•œ๋‹ค.

6.2 ์ด์ง„ ๊ฒ€์ƒ‰(binary search)(์ด๋ถ„ ํƒ์ƒ‰)
์„ ํ˜• ๊ฒ€์ƒ‰์€ ์œ„์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด ํ•˜๋‚˜ ํ•˜๋‚˜ ์š”์†Œ๋“ค์„ ๋น„๊ตํ•œ๋‹ค. ์ด๋ฒˆ์—๋Š” ํ•œ ๋‹จ๊ณ„ ์—…๊ทธ๋ ˆ์ด๋“œ ๋œ ์ •๋ ฌ์ด ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๋Š” ๋ฐฐ์—ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ ํ˜• ๊ฒ€์ƒ‰๋ณด๋‹ค ๋น ๋ฅธ ์ด์ง„ ๊ฒ€์ƒ‰์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ์ด์ง„ ๊ฒ€์ƒ‰์€ ์„ ํ˜• ๊ฒ€์ƒ‰๋ณด๋‹ค ํฌ๊ฒŒ ๊ฐœ์„ ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ํ•˜์ง€๋งŒ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ ๋ฐ˜๋“œ์‹œ ๋ฐฐ์—ด์ด ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๊ฐ’๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ์ด์ง„ ๊ฒ€์ƒ‰์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒ˜์Œ์— ๊ณต๋ถ€ํ–ˆ๋˜ ๋Œ€ํ‘œ์ ์ธ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜์ธ divide and conquer ์ฆ‰, ๋ถ„ํ•  ๊ทธ๋ฆฌ๊ณ  ์ •๋ณต ํŒจํ„ด์ด๋‹ค.

์ด์ง„ ๊ฒ€์ƒ‰ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์œ„ํ•œ ์˜์‚ฌ์ฝ”๋“œ(๊ฐ•์‚ฌ๋‹˜์ด ์•Œ๋ ค์ฃผ์‹  ์˜์‚ฌ์ฝ”๋“œ์ž„)
1. ํ•จ์ˆ˜๋Š” ์ •๋ ฌ๋œ ๋ฐฐ์—ด๊ณผ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ ์ธ์ˆ˜๋กœ ๋ฐ›๋Š”๋‹ค.
2. 3๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ ๋‹ค. ํฌ์ธํ„ฐ ์—ญํ• ์„ ํ•  ๋ณ€์ˆ˜ 2๊ฐœ์™€ ์ค‘๊ฐ„์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋  ๋ณ€์ˆ˜ 1๊ฐœ๋ฅผ ๋งŒ๋“ ๋‹ค.
3. ํฌ์ธํ„ฐ ์—ญํ• ์„ ํ•  ๋ณ€์ˆ˜ ์ค‘ ํ•˜๋‚˜๋Š” ๊ณ„์‚ฐ์„ ์‹œ์ž‘ํ•˜๋Š” ์ขŒ์ธก์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ธ๋ฑ์Šค๋กœ 0์ผ ํ• ๋‹นํ•˜๊ณ , ๋ฐฐ์—ด์˜ ์šฐ์ธก ๋์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์šฐ์ธก ํฌ์ธํ„ฐ๋ฅผ ๋งŒ๋“ค๋ฉฐ ์šฐ์ธก ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์—๋Š” ๋ฐฐ์—ด์˜ ๊ธธ์ด์—์„œ 1์„ ๋บ€ ๊ฐ’์„ ํ• ๋‹นํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ขŒ์ธก ํฌ์ธํ„ฐ๋Š” 0, ์šฐ์ธก ํฌ์ธํ„ฐ๋Š” ๋ฐฐ์—ด.length - 1์„ ํ• ๋‹นํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ํฌ์ธํ„ฐ์˜ ํ‰๊ท ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ค‘๊ฐ„์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ , ์ขŒ์ธก ํฌ์ธํ„ฐ์™€ ์šฐ์ธก ํฌ์ธํ„ฐ์˜ ํ‰๊ท ์„ ์ด์šฉํ•œ๋‹ค.(์†Œ์ˆ˜์  ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด Math.floor๋กœ ๋‚ด๋ฆผ์ด๋‚˜ Math.ceil๋กœ ์˜ฌ๋ฆผ์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.)
4. ๊ทธ๋ฆฌ๊ณ  ๋‘ ๊ฐ€์ง€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋กœ ํ•ญ๋ชฉ์„ ์ฐพ์•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ์—ฐ์‚ฐ์„ ๊ณ„์†ํ•œ๋‹ค. ๋‘ ๋ฒˆ์งธ๋กœ ์ขŒ์ธก ํฌ์ธํ„ฐ๊ฐ€ ์šฐ์ธก ํฌ์ธํ„ฐ๋ณด๋‹ค ์•ž์— ์žˆ๋Š” ๋™์•ˆ์—๋งŒ ์—ฐ์‚ฐ์ด ๊ณ„์†๋˜์–ด์•ผ ํ•œ๋‹ค.
5. ๋งŒ์•ฝ ์ค‘๊ฐ„๊ฐ’์ด ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ์ขŒ์ธก ํฌ์ธํ„ฐ๋ฅผ ์ค‘๊ฐ„๊ฐ’ +1๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ , ์ค‘๊ฐ„๊ฐ’์ด ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์šฐ์ธก ํฌ์ธํ„ฐ๋ฅผ ์ค‘๊ฐ„๊ฐ’ -1๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค. ๊ฐ’์„ ์ฐพ์„๋•Œ๊นŒ์ง€ ์—ฐ์‚ฐ์„ ๊ณ„์†ํ•œ๋‹ค.
6. ์—ฐ์‚ฐ์ด ๋‹ค ๋๋‚œ ํ›„์—๋„ ๊ฐ’์„ ์ฐพ์ง€ ๋ชปํ•œ๋‹ค๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

function indexFinder(arr, ele){
    let left = 0;
    let right = arr.length - 1;
    let middle = Math.floor((left + right) / 2);

    while(arr[middle] !== ele && left <= right){
        if(arr[middle] < ele){
            left = middle + 1;
        }else{
            right = middle -1;
        }
        middle = Math.floor((left + right) / 2);
    }
    if(arr[middle] === ele){
        return middle;
    }
    return -1
}

console.log(indexFinder([1,2,3,4,5,6,7,8,9],3));

๊ต‰์žฅํžˆ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•ต์‹ฌ์€ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ๊ฐ€์ง€๊ณ  ์–‘์ชฝ ๋์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์ค‘๊ฐ„์„ ์„ ํƒํ•œ ๋‹ค์Œ ํ•„์š”์—†๋Š” ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์€ ๋ฒ„๋ฆฌ๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด์„œ ์›ํ•˜๋Š” ์š”์†Œ๋ฅผ ์ฐพ๋Š”๊ฒƒ์ด๋‹ค. ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•ด ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

function indexFinder(arr, ele){
    let left = 0;
    let right = arr.length - 1;
    let middle = Math.floor((left + right) / 2);

    while(arr[middle] !== ele && left <= right){
        if(arr[middle] < ele) left = middle + 1;
        else right = middle -1;
        middle = Math.floor((left + right) / 2);
    }
    return arr[middle] === ele ? middle : -1 //์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž๋กœ ํ‘œํ˜„
}

console.log(indexFinder([1,2,3,4,5,6,7,8,9],3));

์ค‘์š”ํ•œ ์ ์€ ์ด์ง„ ๊ฒ€์ƒ‰์€ O(logN) ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค. ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 2๋ฐฐ๋กœ ๊ธธ์–ด ์ง€๋”๋ผ๋„ ์ฒ˜๋ฆฌ ๊ณผ์ •์€ ํ•œ ๋ฒˆ์”ฉ๋งŒ ๋Š˜์–ด๋‚œ๋‹ค. ์ฆ‰, ๋กœ๊ทธ ์ด์˜ ์ด์˜ n+1...์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ ์ฒ˜๋ฆฌ ๊ณผ์ •์€ ํ•œ ๋ฒˆ์”ฉ๋งŒ ๋Š˜์–ด๋‚˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— O(1) ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋ณด๋‹ค๋Š” ์•„๋‹ˆ์ง€๋งŒ, ๊ต‰์žฅํžˆ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ดค์„๋•Œ ํšจ์œจ์ ์ธ ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•์ด๋‹ค.

6.3 ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•
๊ธด ๋ฌธ์ž์—ด์—์„œ ๋ฌธ์ž ํ•˜๋‚˜ ํ•˜๋‚˜๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š”๊ฒƒ์€ ๋ฉ”์„œ๋“œ๋‚˜ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด์„œ ์‰ฝ๊ฒŒ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ธด ๋ฌธ์ž์—ด์—์„œ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ด๊ณ  ๊ฐ„๋‹จํ•œ ์ ‘๊ทผ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” ๋‘ ๋ฌธ์ž์—ด์„ ๋‚˜๋ž€ํžˆ ๋†“๊ณ ์„œ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ฌธ์ž์”ฉ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž.

'wowomgzomg'๋ฌธ์ž์—ด์—์„œ 'omg'๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€, ๋ช‡ ๋ฒˆ๋“ค์–ด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ ์ž ํ•œ๋‹ค.
wowomgzomg
omg๋น„๊ต
 omg๋น„๊ต
   omg๋น„๊ต
    omg๋น„๊ต
     omg๋น„๊ต
      omg๋น„๊ต
       omg๋น„๊ต
        omg๋น„๊ต
         omg๋น„๊ต
           ์ด๋ ‡๊ฒŒ ํ•˜๋‚˜ ํ•˜๋‚˜ ํ•œ ๊ธ€์ž์”ฉ ์˜ฎ๊ฒจ๊ฐ€๋ฉด์„œ ์ผ์น˜ํ•˜๋Š”๊ฒŒ ์žˆ๋‚˜ ๋น„๊ต! ํ•˜๋Š”๊ฒŒ
           ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์ž„


๊ธด ๋ฌธ์ž์—ด์—์„œ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๋Š” ์˜์‚ฌ์ฝ”๋“œ(๊ฐ•์‚ฌ๋‹˜์ด ์•Œ๋ ค์ฃผ์‹  ์˜์‚ฌ์ฝ”๋“œ์ž„)
1. ๊ธด ๋ฌธ์ž์—ด๊ณผ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ์ธ์ˆ˜๋กœ ๋ฐ›๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ ๋‹ค.
2. ๊ธด ๋ฌธ์ž์—ด์„ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฃจํ”„๋ฅผ ๋งŒ๋“ ๋‹ค.
3. ์งง์€ ๋ฌธ์ž์—ด์„ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฃจํ”„๋ฅผ ์ค‘์ฒฉ๋ฃจํ”„๋กœ ๋งŒ๋“ ๋‹ค.
4. ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž๋ผ๋ฆฌ ๋น„๊ต๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.
5. ๋งŒ์•ฝ ๋ฌธ์ž๋ผ๋ฆฌ์˜ ๋น„๊ต๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์งง์€ ๋ฌธ์ž ๋ฐ˜๋ณต๋ฌธ์˜ ๋ฃจํ”„์—์„œ ๋ฒ—์–ด๋‚œ๋‹ค.(breakํ‚ค์›Œ๋“œ)
6. ๊ทธ๋ฆฌ๊ณ  ๊ธด ๋ฌธ์ž์—ด์˜ ๋ฌธ์ž์™€ ๋ฐ˜๋ณต๋˜๋Š” ์งง์€ ๋ฌธ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ๋น„๊ตํ•˜์—ฌ ์ผ์น˜ํ•˜๋ฉด ๋‹ค์Œ ๋ฌธ์ž๋กœ ๋„˜์–ด๊ฐ„๋‹ค.
7. ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ์ฐพ์œผ๋ฉด ๋‚ด๋ถ€ ๋ฃจํ”„๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ์นด์šดํŠธ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , ์นด์šดํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
8. ์นด์šดํŠธ๋ฅผ 0์—์„œ ์‹œ์ž‘ํ•˜๋ฉด ๋ณ„๋„์˜ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š๋Š”๋‹ค.

function strFinder(long, short){
        let count = 0;
        for(let i = 0 ; i < long.length ; i++){
            for(let j = 0 ; j < short.length ; j++){
                if(short[j] !== long[i + j]) break; //์—ฌ๊ธฐ์„œ i๋Š” ๋น„๊ต๋ฅผ ์‹œ์ž‘ํ•  ๋ฌธ์ž๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ด๊ฐ€ ์‰ฌ์›€
                if(j === short.length - 1) count++;
            }
        }
        return count;
    }


console.log(strFinder("himamahihelhi", "hi"));