์ง์ง ๋๋ฌด ์ด๋ ค์ ๋ค..
๋ฌธ์ ๋ฅผ ๊ฒจ์ฐ ์ดํดํด๋ดค๊ณ ๋ด๊ฐ ์ดํดํ ๋ฐํ์ผ๋ก ์์ ๋ฅผ ํตํด ์ค๋ช ํด๋ณด๊ฒ ๋ค.
stack์ ์ฌ์ฉํ ๊ฒ์ด๊ณ , stack์๋ ๊ฐ์ด ์๋ ์ธ๋ฑ์ค๋ฅผ ๊ฐฑ์ ํด ๋๊ฐ ๊ฒ์ด๋ค.
๋จผ์ ์ฒซ๋ฒ์งธ ์์(index = 0)์ธ 9๋ ๋น๊ต๋์์ด ์์ผ๋ฏ๋ก stack์ ๊ทธ๋ฅ ์ ๋ ฅํ๋ค.
stack์ index๊ฐ ์์ง ์กด์ฌํ๋ค๋ ๋ป์ ์์ง ๋ท ํฐ์๋ฅผ ๋ง๋์ง ๋ชปํ๋ค๋ ์๋ฏธ์ด๋ค.
๊ทธ ๋ค์ ๋๋ฒ์งธ ์์(index = 1)์ ๊ฐ์ด 1์ด๊ณ stack์ ํ์ธํด์ ๋ท ํฐ ์๋ก์ ์ญํ ์ ํ ์ ์๋์ง ํ์ธํด๋ณธ๋ค.
ํ์ง๋ง stack์ ์ ์ฅ๋์ด ์๋ ์ธ๋ฑ์ค๋ก ๊ฐ์ ํ์ธํด๋ณด๋ 1๋ณด๋ค ํฐ 9์ด๋ฏ๋ก ์๊ฑฐํ ์ ์๋ค.
stack์ ๋ณํ ์์ด index 1์ ์คํ์ ์ถ๊ฐํ๋ค.
๊ทธ ๋ค์ 3๋ฒ์งธ ์์์ธ (index = 2) 5๊ฐ ๋ท ํฐ ์ ์ญํ ์ ํ ์ ์๋์ง ํ์ธํด๋ณธ๋ค.
stack[-1] ์์๊ฐ 1์ด๊ณ 1์ด ๊ฐ๋ฆฌํค๋ ๊ฐ์ 1๋ก 5๋ 1์ ๋ท ํฐ ์ ์ญํ ์ ํ ์ ์๋ค.
๋ฐ๋ผ์ answer[1]์ 5๋ฅผ ๊ธฐ๋กํ๋ค.
๊ทธ๋ฆฌ๊ณ stack.pop()์ ํตํด ๋ท ํฐ ์๋ฅผ ์ฑ์ ์ผ๋ ์ธ๋ฑ์ค 1์ ์ง์ด๋ค.
๊ทธ๋ฌ๋ฉด stack = [0] ์ธ ์ํฉ์ด ๋๋๋ฐ
5๊ฐ ๋ท ํฐ ์ ์ญํ ์ ํ ์ ์๋์ง ํ์ธํด๋ณธ๋ค.
ํ์ง๋ง, 0์ด ๊ฐ๋ฆฌํค๋ ๊ฐ์ 9์ด๋ฏ๋ก 5๋ ๋ท ํฐ ์ ์ญํ ์ ํ ์ ์์ด 0์ ์๊ฑฐํ ์ ์๋ค.
๋ฐ๋ผ์, index = 2๋ฅผ stack์ ์ถ๊ฐํ๊ณ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ๋ค.
4๋ฒ์งธ ์์์ธ(index = 3) 3์ด ๋ท ํฐ ์ ์ญํ ์ ํ ์ ์๋์ง ํ์ธํด๋ณธ๋ค.
stack[-1] ์ธ 2๊ฐ ๊ฐ๋ฆฌํค๋ ์์๋ 5์ด๋ฏ๋ก 3์ ๋ท ํฐ ์ ์ญํ ์ ํ ์ ์๊ณ stack์ ์๋ฌด๋ฐ ์ํฅ์ ์ฃผ์ง ๋ชปํ๊ณ
stack์ index = 3์ ์ถ๊ฐํ๊ณ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ๋ค.
5๋ฒ์งธ ์์์ธ (index = 4) 6์ด ๋ท ํฐ ์ ์ญํ ์ ํ ์ ์๋์ง ํ์ธํด๋ณธ๋ค.
๋จผ์ stack[-1]์ธ 3์ด ๊ฐ๋ฆฌํค๋ ์์๊ฐ 3์ด๋ฏ๋ก 6์ ๋ท ํฐ ์ ์ญํ ์ ํ ์ ์์ผ๋ฏ๋ก
answer[stack[-1]] = answer[3] ์ 6์ ๊ธฐ๋กํ๋ค.
๊ทธ๋ฆฌ๊ณ stack.pop()์ ํตํด์ ๋ท ํฐ ์๋ฅผ ๊ธฐ๋กํ ์ธ๋ฑ์ค๋ฅผ stack์์ ์ ์ธ์ํจ๋ค.
ํ ๋ฒ๋ ํ์ธํด๋ณธ๋ค.
stack[-1]์ธ 2๊ฐ ๊ฐ๋ฆฌํค๋ ์์๊ฐ 5์ด๋ฏ๋ก 6์ด ๋ท ํฐ ์ ์ญํ ์ ํ ์ ์์ผ๋ฏ๋ก ๋ง์ฐฌ๊ฐ์ง๋ก
answer[stack[-1]] = answer[2] ์ 6์ ๊ธฐ๋กํ๋ค.
ํ ๋ฒ๋ ํ์ธํด๋ณธ๋ค.
stack[-1]์ธ 0์ด ๊ฐ๋ฆฌํค๋ ์์๊ฐ 9์ด๋ฏ๋ก 6์ ๋ท ํฐ ์ ์ญํ ์ ํ ์ ์๊ณ
stack์ index = 4๋ฅผ ์ถ๊ฐํ๊ณ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ๋ค.
......
์ด๋ฐ์์ผ๋ก ์งํ ๋๋ ๋ก์ง์ด๊ณ , ์ด๋ฅผ ์ฝ๋๋ก ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
def solution(numbers):
answer = [-1]*len(numbers)
stack = []
for index in range(len(numbers)):
target = numbers[index]
while stack and numbers[stack[-1]]<target:
answer[stack.pop()]=target
stack.append(index)
return answer
์ต๋ํ ์ ์ค๋ช ํด๋ณด๋ ค๊ณ ๋ ธ๋ ฅํ๋๋ฐ.. ์ค๋ช ํ ๋ด์ฉ์ด ์ ์ ๋ฌ๋์ผ๋ฉด ์ข๊ฒ ๋ค..ใ