์ ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด numbers
๊ฐ ์์ต๋๋ค. ๋ฐฐ์ด ์ ๊ฐ ์์๋ค์ ๋ํด ์์ ๋ณด๋ค ๋ค์ ์๋ ์ซ์ ์ค์์ ์์ ๋ณด๋ค ํฌ๋ฉด์ ๊ฐ์ฅ ๊ฐ๊น์ด ์๋ ์๋ฅผ ๋ท ํฐ์๋ผ๊ณ ํฉ๋๋ค.
์ ์ ๋ฐฐ์ด numbers
๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋ ์์์ ๋ํ ๋ท ํฐ์๋ค์ ์ฐจ๋ก๋ก ๋ด์ ๋ฐฐ์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ๋จ, ๋ท ํฐ์๊ฐ ์กด์ฌํ์ง ์๋ ์์๋ -1์ ๋ด์ต๋๋ค.
numbers
์ ๊ธธ์ด โค 1,000,000numbers[i]
โค 1,000,000numbers | 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
}