๐Ÿค ์€์ง€log ๐Ÿค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค:Javascript] ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ 4 ๋ณธ๋ฌธ

๐ŸŒˆ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค:Javascript] ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ 4

Eun_zii 2024. 4. 1. 17:53

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

- ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ 4

 

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

  • ์ •์ˆ˜ ๋ฐฐ์—ด arr๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. arr๋ฅผ ์ด์šฉํ•ด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด stk๋ฅผ ๋งŒ๋“œ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ€์ˆ˜ i๋ฅผ ๋งŒ๋“ค์–ด ์ดˆ๊ธฐ๊ฐ’์„ 0์œผ๋กœ ์„ค์ •ํ•œ ํ›„ i๊ฐ€ arr์˜ ๊ธธ์ด๋ณด๋‹ค ์ž‘์œผ๋ฉด ๋‹ค์Œ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ stk๊ฐ€ ๋นˆ ๋ฐฐ์—ด์ด๋ผ๋ฉด arr[i]๋ฅผ stk์— ์ถ”๊ฐ€ํ•˜๊ณ  i์— 1์„ ๋”ํ•ฉ๋‹ˆ๋‹ค.
  • stk์— ์›์†Œ๊ฐ€ ์žˆ๊ณ , stk์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๊ฐ€ arr[i]๋ณด๋‹ค ์ž‘์œผ๋ฉด arr[i]๋ฅผ stk์˜ ๋’ค์— ์ถ”๊ฐ€ํ•˜๊ณ  i์— 1์„ ๋”ํ•ฉ๋‹ˆ๋‹ค.
  • stk์— ์›์†Œ๊ฐ€ ์žˆ๋Š”๋ฐ stk์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๊ฐ€ arr[i]๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด stk์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ stk์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  • ์œ„ ์ž‘์—…์„ ๋งˆ์นœ ํ›„ ๋งŒ๋“ค์–ด์ง„ stk๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

 

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

  • 1 ≤ arr์˜ ๊ธธ์ด ≤ 100,000
    • 1 ≤ arr์˜ ์›์†Œ ≤ 100,000

๐Ÿ’š ํ’€์ด

function solution(arr) {
    const stk = [];
    for (let i = 0; i < arr.length;) {
        if (stk.length === 0) {
            stk.push(arr[i++]);
        } else if (stk[stk.length - 1] < arr[i]) {
            stk.push(arr[i++]);
        } else {
            stk.pop();
        }
    }
    return stk;
}

 

โœ… 

๋ณ€์ˆ˜ i๋ฅผ ๋งŒ๋“ค์–ด ์ดˆ๊ธฐ๊ฐ’์„ 0์œผ๋กœ ์„ค์ •ํ•œ ํ›„ i๊ฐ€ arr์˜ ๊ธธ์ด๋ณด๋‹ค ์ž‘์œผ๋ฉด ๋‹ค์Œ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

: for (let i = 0; i < arr.length;) { }

 

๋งŒ์•ฝ stk๊ฐ€ ๋นˆ ๋ฐฐ์—ด์ด๋ผ๋ฉด arr[i]๋ฅผ stk์— ์ถ”๊ฐ€ํ•˜๊ณ  i์— 1์„ ๋”ํ•ฉ๋‹ˆ๋‹ค.

:  if (stk.length === 0) {
            stk.push(arr[i++]);
        }

 

stk์— ์›์†Œ๊ฐ€ ์žˆ๊ณ , stk์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๊ฐ€ arr[i]๋ณด๋‹ค ์ž‘์œผ๋ฉด arr[i]๋ฅผ stk์˜ ๋’ค์— ์ถ”๊ฐ€ํ•˜๊ณ  i์— 1์„ ๋”ํ•ฉ๋‹ˆ๋‹ค.

: if (stk[stk.length - 1] < arr[i]) {
            stk.push(arr[i++]);
        }

 

stk์— ์›์†Œ๊ฐ€ ์žˆ๋Š”๋ฐ stk์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๊ฐ€ arr[i]๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด stk์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ stk์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

: else {
            stk.pop();
        }

 

๐Ÿ’ก pop() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์—์„œ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๊ทธ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

728x90