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

๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[Javascript/PGS] Lv.2 : ํ• ์ธ ํ–‰์‚ฌ (์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ)

728x90
๋ฐ˜์‘ํ˜•

 

https://school.programmers.co.kr/learn/courses/30/lessons/131127#

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 


(ํ’€์ด ์ฝ”๋“œ๋Š” ํฌ์ŠคํŒ… ๋งจ ์•„๋ž˜์—)

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ ˆ๋ฒจ 2 ์ค‘, ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ๋ฌธ์ œ์ด๋‹ค.

๋ณดํ†ต ๋ธŒ๋ฃจํŠธ ํฌ์Šค(์™„ํƒ)์œผ๋กœ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ sliding window๋กœ ํ’€๋ฉด ํ•ด๊ฒฐ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

 

์ด ๋ถ„์˜ ์˜์ƒ์ด ํฐ ๋„์›€์ด ๋˜์—ˆ๋‹ค

left, right ์ผ์ผ์ด ๋ณ€๊ฒฝํ•  ํ•„์š” ์—†์ด, ๋” ๋‹จ์ˆœํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ์Œ!

 

https://youtu.be/ot5mnp_hTqo?si=v_OlfFmNMui0SHuF

 

๋‚˜์˜ ํ’€์ด

function solution(want, number, discount) {
    let answer = 0;
    let windowSize = 10;
    let discountMap = new Map();
    
    for(let i=0; i<number.length; ++i){
        discountMap.set(want[i],Number(number[i]));
    }
    let right = 9;
    
    for(let i=0; i<discount.length; ++i){
        if(discountMap.has(discount[i])) discountMap.set(discount[i],discountMap.get(discount[i])-1);
        
        if(i>=right){
            // ๋น„๊ต
            if([...discountMap.values()].map(d => d<=0).every(Boolean)) {
                // console.log(discountMap)
                answer++;
            }
            // ์Šฌ๋ผ์ด๋”ฉ
            if(discountMap.has(discount[i-9])) discountMap.set(discount[i-9],discountMap.get(discount[i-9])+1);
        }
    }
    
    return answer;
}

 

728x90
๋ฐ˜์‘ํ˜•