๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[Javascript/PGS] Lv.3 : ํ’์„  ํ„ฐํŠธ๋ฆฌ๊ธฐ

by xxilliant 2025. 5. 9.
728x90
๋ฐ˜์‘ํ˜•

 

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

 

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

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

programmers.co.kr


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

๊ทœ์น™์„ ์ฐพ์•„์„œ ์ ์šฉ์‹œ์ผœ์•ผ ํ•œ๋‹ค

๋‚œ ์ด๋Ÿฐ ์ˆ˜ํ•™/ํŒจํ„ด ์œ ํ˜•์ด ์ข€ ์ƒˆ๋กญ๊ฒŒ ๋А๊ปด์ ธ์„œ ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค...๐Ÿฅน

๊ทธ๋ž˜์„œ ํžŒํŠธ ์ฐธ๊ณ ํ–ˆ๋‹ค ใ…Žใ…Ž

 

๋‚ด๊ฐ€ ์ฐธ๊ณ ํ•œ ๊ธ€์€์‹œ๊ฐ„์ดˆ๊ณผ ๊ฑฑ์ • ์—†๋Š” ํ’€์ด ๋ฐฉ๋ฒ•์ด๋‹ค.

๋‹จ ํ•œ๋ฒˆ๋งŒ ์ž‘์€ ํ’์„ ์„ ํ„ฐํŠธ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ, ์ด ๊ธฐํšŒ๋ฅผ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚จ๊ฒจ๋‘๊ณ 

๋งจ ๋งˆ์ง€๋ง‰์— 2๊ฐœ๊ฐ€ ๋‚จ์•˜์„ ๋•Œ ์ž‘์€ ํ’์„ ์„ ํ„ฐํŠธ๋ฆฌ๊ฑฐ๋‚˜, ์ด ๊ธฐํšŒ๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ํฐ ํ’์„ ์„ ํ„ฐํŠธ๋ฆฌ๋ฉด ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ ค๋ฉด, ๋งˆ์ง€๋ง‰ ์ด์ „์—๋Š” ํ•ญ์ƒ ํฐ ์ˆ˜๊ฐ€ ์‚ฌ๋ผ์ ธ์•ผ ํ•œ๋‹ค(์ž‘์€ ์ˆ˜๋งŒ ์‚ด์•„๋‚จ์Œ)

 

(1) ๋งจ ๋งˆ์ง€๋ง‰์— 2๊ฐœ๊ฐ€ ๋‚จ์•˜์„ ๋•Œ ์ž‘์€ ํ’์„ ์„ ํ„ฐํŠธ๋ฆฌ๋ ค๋ฉด -> ๋‚จ์€ ์ž‘์€ ํ’์„ ์ด ์ตœ์†Ÿ๊ฐ’์ด์–ด์•ผ ํ•จ

(2) ๋งˆ์ง€๋ง‰ 2๊ฐœ์—์„œ ์ด ๊ธฐํšŒ๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ํฐ ํ’์„ ์„ ํ„ฐํŠธ๋ฆฌ๋ฉด -> ์ตœ์†Ÿ๊ฐ’์ด ์‚ด์•„๋‚จ์Œ (๋”ฐ๋ผ์„œ ์ด ์ตœ์†Ÿ๊ฐ’์€ ํ•ญ์ƒ ์‚ด์•„๋‚จ์„ ์ˆ˜ ์žˆ๋‹ค)

 

(3) ๋”ฐ๋ผ์„œ ์ตœ์†Ÿ๊ฐ’ min์„ ๊ตฌํ•œ ๋’ค, ์ด min์€ ์‚ด์•„๋‚จ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ answer = 1๋กœ ์„ค์ •ํ•ด์ค€๋‹ค.

(4) ์ดํ›„ 0 ~ min-1, end ~ min+1 ๊นŒ์ง€์˜ ๋ฒ”์œ„์—์„œ ํ•ญ์ƒ ๋” ์ž‘์€ ์ˆ˜๋งŒ ์‚ด์•„๋‚จ๊ฒŒ ํ•œ๋‹ค. (๋งŒ๋‚˜๋Š” ์ˆซ์ž์™€ ๋ณธ์ธ ์ค‘ ํฐ ์ˆ˜๋ฅผ ํ„ฐํŠธ๋ฆผ)

 

์ฐธ๊ณ  ๋‚ด์šฉ

์ถœ์ฒ˜ : https://school.programmers.co.kr/questions/77305

 

 

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

function solution(a) {
    var answer = 0;
    if(a.length<3) return a.length;
    let minValue = Infinity;
    let minIdx;
    answer = 1;
    for(let i=0; i<a.length; ++i){
        if(minValue>a[i]){
            minValue = a[i];
            minIdx = i;
        }
    }
    
    let big = Infinity;
    for(let i=0; i<minIdx; ++i){
        if(big>=a[i]){
            big = a[i];
            answer++;
        }
    }
    
    big = Infinity;
    for(let i=a.length-1; i>minIdx; --i){
        if(big>=a[i]){
            big = a[i];
            answer++;
        }
    }
    
    return answer;
}

728x90
๋ฐ˜์‘ํ˜•