
์ ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด numbers๊ฐ ์์ต๋๋ค. ๋ฐฐ์ด ์ ๊ฐ ์์๋ค์ ๋ํด ์์ ๋ณด๋ค ๋ค์ ์๋ ์ซ์ ์ค์์ ์์ ๋ณด๋ค ํฌ๋ฉด์ ๊ฐ์ฅ ๊ฐ๊น์ด ์๋ ์๋ฅผ ๋ท ํฐ์๋ผ๊ณ  ํฉ๋๋ค.
์ ์ ๋ฐฐ์ด numbers๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋  ์์์ ๋ํ ๋ท ํฐ์๋ค์ ์ฐจ๋ก๋ก ๋ด์ ๋ฐฐ์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ๋จ, ๋ท ํฐ์๊ฐ ์กด์ฌํ์ง ์๋ ์์๋ -1์ ๋ด์ต๋๋ค.
numbers์ ๊ธธ์ด โค 1,000,000numbers[i] โค 1,000,000| numbers | result | 
|---|---|
| [2, 3, 3, 5] | [3, 5, 5, -1] | 
| [9, 1, 5, 3, 6, 2] | [-1, 5, 6, 6, -1, -1] | 
์ ์ถ๋ ฅ ์ #1
2์ ๋ท ํฐ์๋ 3์ ๋๋ค. ์ฒซ ๋ฒ์งธ 3์ ๋ท ํฐ์๋ 5์ ๋๋ค. ๋ ๋ฒ์งธ 3 ๋ํ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. 5๋ ๋ท ํฐ์๊ฐ ์์ผ๋ฏ๋ก -1์ ๋๋ค. ์ ์๋ค์ ์ฐจ๋ก๋๋ก ๋ฐฐ์ด์ ๋ด์ผ๋ฉด [3, 5, 5, -1]์ด ๋ฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
9๋ ๋ท ํฐ์๊ฐ ์์ผ๋ฏ๋ก -1์ ๋๋ค. 1์ ๋ท ํฐ์๋ 5์ด๋ฉฐ, 5์ 3์ ๋ท ํฐ์๋ 6์ ๋๋ค. 6๊ณผ 2๋ ๋ท ํฐ์๊ฐ ์์ผ๋ฏ๋ก -1์ ๋๋ค. ์ ์๋ค์ ์ฐจ๋ก๋๋ก ๋ฐฐ์ด์ ๋ด์ผ๋ฉด [-1, 5, 6, 6, -1, -1]์ด ๋ฉ๋๋ค.
function solution(numbers) {
    // ๊ธฐ์กด ๊ฐ์ -1๋ก ์
ํ
    const baseArr = new Array(numbers.length).fill(0).map(_ => -1)
    // ์คํ ์์ฑ
    const stack = []
    // ํ๋ฒ์ ๋ฐ๋ณต์ผ๋ก ์ ๋ ฌ
    for(let i = 0 ; i < numbers.length ; i ++) {
        while(stack.length && numbers[stack.at(-1)] < numbers[i]) {
            baseArr[stack.pop()] = numbers[i]
        }
        stack.push(i)
    }
    return baseArr
}