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

Daehyunii's Dev-blog

ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ ๋ณธ๋ฌธ

๐Ÿ“š Language & CS knowledge/Algorithm (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค)

ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ

Daehyunii 2022. 10. 24. 13:22

์ถœ์ฒ˜ : ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค https://programmers.co.kr/

 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


 

๋ฌธ์ œ
์–ด๋–ค ์ˆซ์ž์—์„œ k๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๊ตฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆซ์ž 1924์—์„œ ์ˆ˜ ๋‘ ๊ฐœ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด [19, 12, 14, 92, 94, 24] ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋Š” 94 ์ž…๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ์ˆซ์ž number์™€ ์ œ๊ฑฐํ•  ์ˆ˜์˜ ๊ฐœ์ˆ˜ k๊ฐ€ solution ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. number์—์„œ k ๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

์ œํ•œ ์กฐ๊ฑด
number๋Š” 2์ž๋ฆฌ ์ด์ƒ, 1,000,000์ž๋ฆฌ ์ดํ•˜์ธ ์ˆซ์ž์ž…๋‹ˆ๋‹ค.
k๋Š” 1 ์ด์ƒ number์˜ ์ž๋ฆฟ์ˆ˜ ๋ฏธ๋งŒ์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ
number                  k        return
"1924"                    2       "94"
"1231234"            3       "3234"
"4177252841"    4      "775841"

 

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

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

 

function solution(number, k) {
    var answer = '';
    let temp = number.split('');
    let cnt = 0;
    let idx = 0;

    while(cnt < k){
        if(Number(temp[idx]) < Number(temp[idx + 1])){
            temp.splice(idx, 1);
            cnt++;
            idx = 0;
        } else {
            idx++;
        }
    }
    return answer = temp.join('');
}

 

  ๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค .. ์˜ณ๋ฐ”๋ฅธ ์ •๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๊ฒƒ์€ ๋งž์ง€๋งŒ ,,, number๊ฐ€ 100๋งŒ์ž๋ฆฌ ์ดํ•˜์ธ ์ˆซ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ญ์ œํ•  ๋•Œ๋งˆ๋‹ค ๋ฐ˜๋ณต๋ฌธ์„ ๊ณ„์†ํ•ด์„œ ๋Œ๋ฆฌ๊ฒŒ ๋˜๋ฏ€๋กœ,, ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ํšจ์œจ์„ฑ ์ด์Šˆ๋กœ ์ธํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•ด ๋‚ด์ง€๋Š” ๋ชปํ–ˆ๊ณ , ๊ฐ•์‚ฌ๋‹˜์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋“ค์—ˆ๋‹ค. ๊ฐ•์‚ฌ๋‹˜์€ stack์„ ์ด์šฉํ•˜์—ฌ ์Šคํƒ์— ์ˆซ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ์ง‘์–ด๋„ฃ๊ณ  ๋งˆ์ง€๋ง‰์— ๋“ค์–ด๊ฐ„ ์ˆซ์ž์™€ ๊ทธ ๋‹ค์Œ ์ˆซ์ž๋ฅผ ๋น„๊ตํ•ด์„œ ๊ทธ ๋‹ค์Œ ์ˆซ์ž๊ฐ€ ๋” ํฐ ๊ฒฝ์šฐ์—๋Š” pop()์œผ๋กœ ์ œ๊ฑฐํ•ด์ฃผ๊ณ  ๋ฐ˜๋Œ€๋กœ ์ž‘๋‹ค๋ฉด ๊ทธ๋Œ€๋กœ push()๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•˜๋Š” ์ˆซ์ž ๊ฐœ์ˆ˜์™€ ๋น„๊ตํ•˜๋ฉด์„œ ์ถ”๊ฐ€์™€ ์‚ญ์ œ๋ฅผ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰ stack์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’๋“ค์„ join('')ํ•ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

  ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ ์—ฃ์ง€ ์ผ€์ด์Šค์ด๋‹ค. '98765432' ๋น„๊ต๊ฐ€ ์ด๋ค„์ง€๋Š” ์ฒ˜์Œ ์ˆซ์ž๋ณด๋‹ค ๊ทธ ๋‹ค์Œ ์ˆซ์ž๊ฐ€ ์ „๋ถ€ ์ž‘์€ ๊ฒฝ์šฐ์—๋Š” stack์— ์ „๋ถ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฏ€๋กœ ์ œ๊ฑฐํ•ด์•ผ ํ•˜๋Š” ์ˆซ์ž ๊ฐœ์ˆ˜์™€ ์ผ์น˜ํ•  ๋•Œ๊นŒ์ง€ ๋‹ค์‹œ stack์—์„œ pop()์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

๋ฌธ์ œ ํ•ด๊ฒฐ
function solution(number, k) {
    let stack = [];
    let count = 0;

    for(let item of number) {
        while (count < k && stack[stack.length - 1] < item){
            stack.pop();
            count += 1;
        }
        stack.push(item);
    }

    while (count < k) {
        stack.pop();
        count += 1;
    }

    return stack.join('');
}

 

  ์„ฑ๋Šฅ์ธก๋ฉด์—์„œ ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„์ง„ ๋‹ค๋Š”๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์•„์ง๊นŒ์ง€๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์„ ์ƒ๊ฐํ•ด ๋‚ด๊ณ  ์–ด๋–ค ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ์ข‹์„์ง€๊ฐ€ ๋ฐ”๋กœ ๋ฐ”๋กœ ๋– ์˜ค๋ฅด๋Š” ์ˆ˜์ค€์€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ฅผ ์—ฐ์Šตํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์‚ฌ์‹ค ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ์ ‘ํ•˜๊ณ  ํ’€๊ธฐ ์œ„ํ•ด ๊ณ ๋ฏผํ•˜๊ณ  ํ’€์–ด๋ณด๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋„ ๋งŽ์ด ์ ‘ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ฟ์ด๋ผ๋Š”๊ฑธ ์•Œ๊ณ  ์žˆ๋‹ค! ๊ฒฐ๋ก ์€,,,ํ™”์ดํŒ…์ด๋‹ค!! ใ…‹ใ…‹ใ…‹ใ…‹