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

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 1๋‹จ๊ณ„ : ๋ช…์˜ˆ์˜ ์ „๋‹น (1)

by ์ฝ”ํŒŒ์นด 2022. 12. 8.
728x90

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 1๋‹จ๊ณ„ : ๋ช…์˜ˆ์˜ ์ „๋‹น (1)

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต > ์—ฐ์Šต๋ฌธ์ œ > ๋ช…์˜ˆ์˜ ์ „๋‹น (1)


๐Ÿ’ฉ ๋ฌธ์ œ ์„ค๋ช…

"๋ช…์˜ˆ์˜ ์ „๋‹น"์ด๋ผ๋Š” TV ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋งค์ผ 1๋ช…์˜ ๊ฐ€์ˆ˜๊ฐ€ ๋…ธ๋ž˜๋ฅผ ๋ถ€๋ฅด๊ณ , ์‹œ์ฒญ์ž๋“ค์˜ ๋ฌธ์ž ํˆฌํ‘œ์ˆ˜๋กœ ๊ฐ€์ˆ˜์—๊ฒŒ ์ ์ˆ˜๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๋งค์ผ ์ถœ์—ฐํ•œ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์ถœ์—ฐ ๊ฐ€์ˆ˜๋“ค์˜ ์ ์ˆ˜ ์ค‘ ์ƒ์œ„ k๋ฒˆ์งธ ์ด๋‚ด์ด๋ฉด ํ•ด๋‹น ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๋ฅผ ๋ช…์˜ˆ์˜ ์ „๋‹น์ด๋ผ๋Š” ๋ชฉ๋ก์— ์˜ฌ๋ ค ๊ธฐ๋…ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์ดํ›„ ์ดˆ๊ธฐ์— k์ผ๊นŒ์ง€๋Š” ๋ชจ๋“  ์ถœ์—ฐ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ๋ช…์˜ˆ์˜ ์ „๋‹น์— ์˜ค๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. k์ผ ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ์ถœ์—ฐ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ๊ธฐ์กด์˜ ๋ช…์˜ˆ์˜ ์ „๋‹น ๋ชฉ๋ก์˜ k๋ฒˆ์งธ ์ˆœ์œ„์˜ ๊ฐ€์ˆ˜ ์ ์ˆ˜๋ณด๋‹ค ๋” ๋†’์œผ๋ฉด, ์ถœ์—ฐ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ ๋ช…์˜ˆ์˜ ์ „๋‹น์— ์˜ค๋ฅด๊ฒŒ ๋˜๊ณ  ๊ธฐ์กด์˜ k๋ฒˆ์งธ ์ˆœ์œ„์˜ ์ ์ˆ˜๋Š” ๋ช…์˜ˆ์˜ ์ „๋‹น์—์„œ ๋‚ด๋ ค์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ด ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋งค์ผ "๋ช…์˜ˆ์˜ ์ „๋‹น"์˜ ์ตœํ•˜์œ„ ์ ์ˆ˜๋ฅผ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, k = 3์ด๊ณ , 7์ผ ๋™์•ˆ ์ง„ํ–‰๋œ ๊ฐ€์ˆ˜์˜ ์ ์ˆ˜๊ฐ€ [10, 100, 20, 150, 1, 100, 200]์ด๋ผ๋ฉด, ๋ช…์˜ˆ์˜ ์ „๋‹น์—์„œ ๋ฐœํ‘œ๋œ ์ ์ˆ˜๋Š” ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด [10, 10, 10, 20, 20, 100, 100]์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€1 ๋ช…์˜ˆ์˜ ์ „๋‹น ๋ชฉ๋ก์˜ ์ ์ˆ˜์˜ ๊ฐœ์ˆ˜ k, 1์ผ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋‚ ๊นŒ์ง€ ์ถœ์—ฐํ•œ ๊ฐ€์ˆ˜๋“ค์˜ ์ ์ˆ˜์ธ score๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋งค์ผ ๋ฐœํ‘œ๋œ ๋ช…์˜ˆ์˜ ์ „๋‹น์˜ ์ตœํ•˜์œ„ ์ ์ˆ˜๋ฅผ returnํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๐Ÿ’ฉ ์ œํ•œ ์กฐ๊ฑด

โ˜๏ธ 3 โ‰ค k โ‰ค 100
โœŒ 7 โ‰ค score์˜ ๊ธธ์ด โ‰ค 1,000
    โž• 0 โ‰ค score[i] โ‰ค 2,000

๐Ÿ’ฉ ๋ฌธ์ œ ํ’€์ด

function solution(k, score) {
    let last = []; // ์ตœํ•˜ ์ ์ˆ˜ ๋ชฉ๋ก
    let answer = [];
    if(k<score.length){
        for(i=0; i<k; i++){
            answer.push(score[i]); // ๋‹ค์Œ๋‚ ์˜ ์ ์ˆ˜ ๋„ฃ์–ด์ฃผ๊ธฐ
            answer.sort((a,b) => {return a-b}); // ์ •๋ ฌ
            last.push(answer[0]); // ์ตœํ•˜์œ„ ์ ์ˆ˜ ๋„ฃ์–ด์ฃผ๊ธฐ
        }
        for(i=k; i<score.length; i++){
            answer.push(score[i]); // ๋‹ค์Œ๋‚ ์˜ ์ ์ˆ˜ ๋„ฃ์–ด์ฃผ๊ธฐ
            answer.sort((a,b) => {return a-b}); // ์ •๋ ฌ
            answer.shift(); // ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜ ์ œ๊ฑฐ(ํƒˆ๋ฝ)
            last.push(answer[0]); // ์ตœํ•˜์œ„ ์ ์ˆ˜ ๋„ฃ์–ด์ฃผ๊ธฐ
        }
    } else {
        for(i=0; i<score.length; i++){
            answer.push(score[i]); // ๋‹ค์Œ๋‚ ์˜ ์ ์ˆ˜ ๋„ฃ์–ด์ฃผ๊ธฐ
            answer.sort((a,b) => {return a-b}); // ์ •๋ ฌ
            last.push(answer[0]); // ์ตœํ•˜์œ„ ์ ์ˆ˜ ๋„ฃ์–ด์ฃผ๊ธฐ
        }
    }
    return last;
}

for๋ฌธ์˜ ์—ฐ๋ฐœ! ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ†ต๊ณผ์ธ๋ฐ ์ž๊พธ ์‹คํŒจํ•ด์„œ ๋ณด๋‹ˆ๊นŒ, k๊ฐ€ score๋ณด๋‹ค ํด ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜๋”๋ผ๊ณ ์š”. ๊ทธ๋ž˜์„œ if๋ฌธ์œผ๋กœ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋•Œ๋ ค๋ฐ•์œผ๋‹ˆ๊นŒ ๋ฐ”๋กœ ํ†ต๊ณผํ–ˆ๋Š”๋ฐ... ์ด๋ž˜๋„ ๋˜๋‚˜ ์‹ถ๊ณ  ์ง€์ €๋ถ„ํ•˜๋„ค์š”.

๐Ÿ’ฉ ๋‹ค๋ฅธ ํ’€์ด

function solution(k, score) {
    const stack = []
    return score.reduce((a,c) => {
        if(stack.length < k) {
            stack.push(c)
            stack.sort((a,b) => a - b)
        }
        else {
            stack.push(c)
            stack.sort((a,b) => a - b)
            stack.shift()
        }
        a.push(stack[0])
        return a
    },[])
}

stack ๋ฐฐ์—ด ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ k๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ, ์ ์ˆ˜๋ฅผ pushํ•ด ์ฃผ๊ณ , ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ k๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์„ ๊ฒฝ์šฐ, ๊ฐ€์žฅ ๋‚ฎ์€ ์ ์ˆ˜๋ฅผ ๋นผ์ฃผ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ๊นŒ์ง€๋งŒ ์•Œ๊ฒ ๋„ค์š”... reduce()์™€ ๋” ๋ฉ€์–ด์ง€๋Š” ๊ธฐ๋ถ„์ด์—์š”...

728x90

๋Œ“๊ธ€

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๐Ÿฆ™

CSS
๊ด‘๊ณ  ์ค€๋น„์ค‘