[๋ฐฑ์ค 2493 ๐ฅ] ํ
๋ฌธ์
KOI ํต์ ์ฐ๊ตฌ์๋ ๋ ์ด์ ๋ฅผ ์ด์ฉํ ์๋ก์ด ๋น๋ฐ ํต์ ์์คํ ๊ฐ๋ฐ์ ์ํ ์คํ์ ํ๊ณ ์๋ค. ์คํ์ ์ํ์ฌ ์ผ์ง์ ์์ N๊ฐ์ ๋์ด๊ฐ ์๋ก ๋ค๋ฅธ ํ์ ์ํ ์ง์ ์ ์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ ๋ฐฉํฅ์ผ๋ก ์ฐจ๋ก๋ก ์ธ์ฐ๊ณ , ๊ฐ ํ์ ๊ผญ๋๊ธฐ์ ๋ ์ด์ ์ก์ ๊ธฐ๋ฅผ ์ค์นํ์๋ค. ๋ชจ๋ ํ์ ๋ ์ด์ ์ก์ ๊ธฐ๋ ๋ ์ด์ ์ ํธ๋ฅผ ์งํ๋ฉด๊ณผ ํํํ๊ฒ ์ํ ์ง์ ์ ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก ๋ฐ์ฌํ๊ณ , ํ์ ๊ธฐ๋ฅ ๋ชจ๋์๋ ๋ ์ด์ ์ ํธ๋ฅผ ์์ ํ๋ ์ฅ์น๊ฐ ์ค์น๋์ด ์๋ค. ํ๋์ ํ์์ ๋ฐ์ฌ๋ ๋ ์ด์ ์ ํธ๋ ๊ฐ์ฅ ๋จผ์ ๋ง๋๋ ๋จ ํ๋์ ํ์์๋ง ์์ ์ด ๊ฐ๋ฅํ๋ค.
์๋ฅผ ๋ค์ด ๋์ด๊ฐ 6, 9, 5, 7, 4์ธ ๋ค์ฏ ๊ฐ์ ํ์ด ์ํ ์ง์ ์ ์ผ๋ ฌ๋ก ์ ์๊ณ , ๋ชจ๋ ํ์์๋ ์ฃผ์ด์ง ํ ์์์ ๋ฐ๋ ๋ฐฉํฅ(์ผ์ชฝ ๋ฐฉํฅ)์ผ๋ก ๋์์ ๋ ์ด์ ์ ํธ๋ฅผ ๋ฐ์ฌํ๋ค๊ณ ํ์. ๊ทธ๋ฌ๋ฉด, ๋์ด๊ฐ 4์ธ ๋ค์ฏ ๋ฒ์งธ ํ์์ ๋ฐ์ฌํ ๋ ์ด์ ์ ํธ๋ ๋์ด๊ฐ 7์ธ ๋ค ๋ฒ์งธ ํ์ด ์์ ์ ํ๊ณ , ๋์ด๊ฐ 7์ธ ๋ค ๋ฒ์งธ ํ์ ์ ํธ๋ ๋์ด๊ฐ 9์ธ ๋ ๋ฒ์งธ ํ์ด, ๋์ด๊ฐ 5์ธ ์ธ ๋ฒ์งธ ํ์ ์ ํธ๋ ๋์ด๊ฐ 9์ธ ๋ ๋ฒ์งธ ํ์ด ์์ ์ ํ๋ค. ๋์ด๊ฐ 9์ธ ๋ ๋ฒ์งธ ํ๊ณผ ๋์ด๊ฐ 6์ธ ์ฒซ ๋ฒ์งธ ํ์ด ๋ณด๋ธ ๋ ์ด์ ์ ํธ๋ ์ด๋ค ํ์์๋ ์์ ์ ํ์ง ๋ชปํ๋ค.
ํ๋ค์ ๊ฐ์ N๊ณผ ํ๋ค์ ๋์ด๊ฐ ์ฃผ์ด์ง ๋, ๊ฐ๊ฐ์ ํ์์ ๋ฐ์ฌํ ๋ ์ด์ ์ ํธ๋ฅผ ์ด๋ ํ์์ ์์ ํ๋์ง๋ฅผ ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ์ ์๋ฅผ ๋ํ๋ด๋ ์ ์ N์ด ์ฃผ์ด์ง๋ค. N์ 1 ์ด์ 500,000 ์ดํ์ด๋ค. ๋์งธ ์ค์๋ N๊ฐ์ ํ๋ค์ ๋์ด๊ฐ ์ง์ ์์ ๋์ธ ์์๋๋ก ํ๋์ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. ํ๋ค์ ๋์ด๋ 1 ์ด์ 100,000,000 ์ดํ์ ์ ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฃผ์ด์ง ํ๋ค์ ์์๋๋ก ๊ฐ๊ฐ์ ํ๋ค์์ ๋ฐ์ฌํ ๋ ์ด์ ์ ํธ๋ฅผ ์์ ํ ํ๋ค์ ๋ฒํธ๋ฅผ ํ๋์ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ๋ ์ด์ ์ ํธ๋ฅผ ์์ ํ๋ ํ์ด ์กด์ฌํ์ง ์์ผ๋ฉด 0์ ์ถ๋ ฅํ๋ค.

๋ฌธ์ ํ์ด
import sys
n=int(sys.stdin.readline())
top=list(map(int,sys.stdin.readline().strip().split(' ')))
ans=[0]*n
stack=[]
for i in range(1,n+1):
cur=top[i-1]
while stack and stack[-1][0]<cur:
stack.pop()
if stack:
ans[i-1]=stack[-1][1]
stack.append([cur, i])
for a in ans:
print(a, end=' ')
์ด์ ํ์๋ ๋ฐฑ์ค 1863๋ฒ ์ค์นด์ด๋ผ์ธ ์ฌ์ด ๊ฑฐ ๋ฌธ์ ๋ ์์ด๋์ด๊ฐ ๋น์ทํด์ ๋ฐ๋ก ํ์ด๋ฒ์ ์๊ฐํด๋ผ ์ ์์๋ค.
์ผ์ชฝ๋ถํฐ ์ฐจ๋ก๋ก ์ธ์์ ธ์๋ ํ๋ค์ ํ์ํ๋ฉด์ for๋ฌธ์ผ๋ก ํ์ํ๋ฉด์ ์ผ์ชฝ ํ๋ค ์ค ๋ ์ด์ ๋ฅผ ๋ฐ์ ์ ์๋ ํ์ ํ์ํ๋ค.
์คํ์ top์ด ๋ณ์ cur์ ์ ์ฅ๋ ํ์ฌ ํ๋ณด๋ค ๋ ๋์์ง๊ธฐ ์ ๊น์ง ์คํ์์ pop()์ ํด์ค๋ค.
๋ชจ๋ popํด์ค ๋ค์ ์คํ์ ๋จ์ ๊ฐ์ด ์๋ค๋ฉด ํ์ฌ ์คํ์ ์์นํ ํ์ด ํ์ฌ ํ์ ๋ ์ด์ ๋ฅผ ๋ฐ์ ์ ์๋ ํ์ด ๋๋ฏ๋ก
ans[ํ์ฌ ํ ๋ฒํธ]='์คํ์ ํ ๋์ด'๋ฅผ ์ ์ฅํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ฌ ํ์ ์คํ์ ํ ๋ฒํธ์ ํจ๊ป pushํ๋ค.
์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๊ณ ๋ชจ๋ ํ์ ํ์ํ๊ณ ๋์ ans์ ์ ์ฅ๋ ๊ฐ์ ์ถ๋ ฅํ๋ค.
์ด๋ฌํ ๊ณผ์ ์ ๊ทธ๋ฆผ์ผ๋ก ์ค๋ช ํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.

์ฆ, ํ์ฌ ํ ๊ธฐ์ค์ผ๋ก ์์ ๋ณด๋ค ์ผ์ชฝ์ ์๋ ํ๋ค ์ค ์์ ๋ณด๋ค ํฐ ๊ฐ์ฅ ๊ฐ๊น์ด ํ์ ์ฐพ๋ ๊ฒ์ด๋ค.