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

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

[Javascript/PGS] Lv.3 : ๋ณด์„ ์‡ผํ•‘

728x90
๋ฐ˜์‘ํ˜•

 

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

 

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

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

programmers.co.kr


ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ ˆ๋ฒจ 3.

 

์ฒ˜์Œ์— ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ํ’€์—ˆ๋‹ค๊ฐ€ ๋ฒ”์œ„ ๋ณด๋‹ˆ ์‹œ๊ฐ„์ดˆ๊ณผ๋‚  ๊ฒƒ ๊ฐ™์•„์„œ ๊ฐˆ์•„์—Ž์—ˆ๋‹ค.

ํˆฌํฌ์ธํ„ฐ/์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋ฅผ ์ ์šฉํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ์ธ๊ฑด ๋ˆˆ์น˜๋ฅผ ์ฑ˜๋Š”๋ฐ

๊ตฌํ˜„ ๋ฐฉ์‹์ด ๊ฐ€๋ฌผ๊ฐ€๋ฌผํ•ด์„œ ๊ณ ์ „ํ–ˆ๋‹ค..^-^

 

๊ทธ๋ฆฌ๊ณ  ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋ฅผ ์ž˜๋ชป ์ ์šฉํ•ด์„œ ๋น„ํšจ์œจ์ ์ธ ์ฝ”๋“œ๊ฐ€ ๋จ. (๊ทธ๋ƒฅ ๊ณ„์† ์ฐฝ๋ฌธ ๋งŒ๋“œ๋Š” ์‚ฌ๋žŒ ๋จ)

๊ฐœ์„  ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๋‹ˆ Map์„ ์‚ฌ์šฉํ•ด์„œ Set๊ณผ ๊ฐฏ์ˆ˜ ๋น„๊ต๋ฅผ ํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ•˜๊ธธ๋ž˜ ๊นœ์ง ๋†€๋ž๋‹ค

์‹ค์ „์—์„œ ์ด๋Ÿฐ ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๋ ค๋ฉด ๋” ์—ด์‹ฌํžˆ ํ•ด์•ผ๊ฒ ์Œใ… 

์ƒ๊ฐํ•ด๋ณด๋‹ˆ Map๋„ key๊ฐ’ ์ค‘๋ณต์ด ์•ˆ๋˜๋‹ˆ๊นŒ Set์ด๋ž‘ ์ข…๋ฅ˜ ๊ฐฏ์ˆ˜ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค

 

gpt..๊ณต๋ถ€ ์‹œ์ผœ์ค˜์„œ ๊ณ ๋ง™๋‹ค

 

 

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

var answer = [];

function solution(gems) {
    let gemSet = new Set(gems);
    let size = gemSet.size;
    let start = 0;
    let end = 0;
    let gemCount = new Map(); // ํ˜„์žฌ ์œˆ๋„์šฐ ๋‚ด ๋ณด์„ ๊ฐœ์ˆ˜
    let min = 100001;
    // ๊ฐ ์ธ๋ฑ์Šค start์—์„œ ์ตœ์†Œ end๊ฐ’ ์ฐพ๊ธฐ
    while(end < gems.length){
        gemCount.set(gems[end], (gemCount.get(gems[end])||0) + 1);
        
        while(size == gemCount.size){ // ์œˆ๋„์šฐ ๋‚ด๋ถ€์˜ ์ข…๋ฅ˜ ๊ฐฏ์ˆ˜๊ฐ€ ๊ฐ™์„ ๋™์•ˆ
            if(min > end-start){
                min = end-start;
                answer = [start+1, end+1];
            }
            // ์•ž๋ถ€๋ถ„ ์ œ๊ฑฐ ํ›„ start + 1 (์ถ•์†Œ)
            gemCount.set(gems[start], gemCount.get(gems[start]) - 1);
            if (gemCount.get(gems[start]) === 0) {
                gemCount.delete(gems[start]);
            }
            start++;
        }
        // ์ข…๋ฅ˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด end + 1 (ํ™•์žฅ)
        end++;
    }
    
    return answer;
}

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ ˆ๋ฒจ3 ์ •๋‹ต๋ฅ  50%๋Œ€ ์ดํ•˜๋ถ€ํ„ฐ๋Š” ๊ฒฐ์ฝ” ๋งŒ๋งŒํ•˜์ง€ ์•Š๋‹ค....

๋ณต์Šตํ•ด์•ผ์ง€!!

 

728x90
๋ฐ˜์‘ํ˜•