๐Ÿคทโ€โ™€๏ธ[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋’ค์— ์žˆ๋Š” ํฐ ์ˆ˜ ์ฐพ๊ธฐ

Chobbyยท2023๋…„ 3์›” 11์ผ
0

Programmers

๋ชฉ๋ก ๋ณด๊ธฐ
181/345

๐Ÿงก๋ฌธ์ œ ์„ค๋ช…

์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด numbers๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์˜ ๊ฐ ์›์†Œ๋“ค์— ๋Œ€ํ•ด ์ž์‹ ๋ณด๋‹ค ๋’ค์— ์žˆ๋Š” ์ˆซ์ž ์ค‘์—์„œ ์ž์‹ ๋ณด๋‹ค ํฌ๋ฉด์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์ด ์žˆ๋Š” ์ˆ˜๋ฅผ ๋’ท ํฐ์ˆ˜๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์ •์ˆ˜ ๋ฐฐ์—ด numbers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ์›์†Œ์— ๋Œ€ํ•œ ๋’ท ํฐ์ˆ˜๋“ค์„ ์ฐจ๋ก€๋กœ ๋‹ด์€ ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ๋‹จ, ๋’ท ํฐ์ˆ˜๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์›์†Œ๋Š” -1์„ ๋‹ด์Šต๋‹ˆ๋‹ค.


๐Ÿ’›์ œํ•œ์‚ฌํ•ญ

  • 4 โ‰ค numbers์˜ ๊ธธ์ด โ‰ค 1,000,000
  • 1 โ‰ค numbers[i] โ‰ค 1,000,000

๐Ÿ’š์ž…์ถœ๋ ฅ ์˜ˆ

numbersresult
[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
}
profile
๋‚ด ์ง€์‹์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๋‹ดํ•จ

0๊ฐœ์˜ ๋Œ“๊ธ€