https://www.acmicpc.net/problem/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 ์ดํ์ ์ ์์ด๋ค.
์ ๋ ฅ ์กฐ๊ฑด์์ ์ ์ ์๋ ๊ฒ์ N์ด 100,000์ด๋ผ๊ณ ํ๋๋ผ๋ ์ด๋ 10์ 6์น์ด๋ค. ๋ณดํต ์๊ฐ๋ณต์ก๋์ N์ ๋์ ํ์์ ๋ ๊ทธ ๊ฒฐ๊ณผ๊ฐ์ด ์ 8์น์ ๋์ผ๋ฉด ์๊ฐ ์ด๊ณผ๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ๊ทธ๋ ๊ธฐ์ ์ด ๋ฌธ์ ์์๋ ์ด์ค for ๋ฌธ์ ์ฐ๋ฉด ์๋๋ค.
์ฌ์ค ํ์ฐธ์ ํค๋งค๋ค๊ฐ ๊ฒฐ๊ตญ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ๋ณด๊ฒ ๋์๋๋ฐ stack์ผ๋ก ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์๋ค. ๋ค๋ง ๊ฐ๊ณผํ๋ ๊ฒ์ stack์ ๋ฆฌ์คํธ๋ฅผ appendํ์ฌ ์ด์ค ๋ฐฐ์ด๋ก ๋ง๋ ๋ค๋ ๊ฒ.
์ด ๋ฌธ์ ์์๋ ์ต๋๊ฐ์ stack์ ์ ์ฅํด๋๊ณ test case๋ก ๋ฐ์ ๊ฐ๊ณผ ๋น๊ตํด๊ฐ๋ฉฐ answer์ ์ ๋ต์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
์ฐ์ stack๊ณผ answer ๋ ๊ฐ์ ๋น ๋ฐฐ์ด์ ๋ง๋ค์ด์ฃผ๊ณ , N๋งํผ for๋ฌธ์ ๋๋ฉด์ stack์ด ๋น์ด์๋ค๋ฉด ๋์ ์ผ์ชฝ ๊ธฐ์ค ๋๋ณด๋ค ํฐ ๊ฐ์ด ์๋ค๋ ๊ฒ์ ๋ป ํ๋ฏ๋ก answer ๋ฐฐ์ด์๋ 0์, stack์๋ case ๋ฐฐ์ด์ i ๋ฒ์งธ ๊ฐ์ [index, value] ํ์์ผ๋ก append ํด์ค๋ค. ๋ง์ฝ stack์ ๊ฐ์ด ์๋ค๋ฉด stack์์ ์๋ ๋ฐฐ์ด์ index์ valuee ์ค value๊ฐ ์ฐ๋ฆฌ๊ฐ ๋น๊ตํ๊ณ ์ ํ๋ case์ ๊ฐ๋ณด๋ค ํฐ์ง ํ์ธํ๋ค. ๋ง์ฝ stack์ ์๋ ๊ฐ์ด ๋ ํฌ๋ค๋ฉด ํด๋น ๊ฐ์ ์ธ๋ฑ์ค๊ฐ answer์ ๋ค์ด๊ฐ๊ฒ ๋๋ค. ๋ง์ฝ์ stack์ ๊ฐ์ด ์์ง๋ง stack์์ ์๋ ๊ฐ๋ณด๋ค case ๋ฐฐ์ด์ ์๋ ๊ฐ์ด ํฌ๋ค๋ฉด ๋ ์ด์ ๊ฐ ๋ฟ์ ์ ์์ผ๋ฏ๋ก stack์ ์๋ ๊ฐ์ popํด๊ฐ๋ฉฐ ๊ฐ์ ๋น๊ตํด์ค๋ค.
์ถ๊ฐ๋ก ์์ ์ ๋ณด์๋ https://leetcode.com/problems/daily-temperatures/ ๋ฌธ์ ์ ๋น์ทํ๋ค๊ณ ๋๊ปด์ ํจ๊ป ํ์ด๋ณด๋ฉด ์ข์ ๊ฑฐ ๊ฐ๋ค.
โจ ์ฝ๋
N = int(input())
case = list(map(int, input().split()))
stack = []
answer = []
for i in range (N) :
while stack:
if stack[-1][1] > case[i] :
answer.append(stack[-1][0]+1)
break
else :
stack.pop()
if not stack :
answer.append(0)
stack.append([i, case[i]])
print(*answer)
'์๊ณ ๋ฆฌ์ฆ ๐ฅ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 1935๋ฒ: ํ์ ํ๊ธฐ์2(S3) (1) | 2023.12.29 |
---|---|
๋ฐฑ์ค 1158๋ฒ : ์์ธํธ์ค ๋ฌธ์ (S4) (0) | 2023.12.29 |
๋ฐฑ์ค 2346๋ฒ : ํ์ ํฐ๋จ๋ฆฌ๊ธฐ(S3) (0) | 2023.12.29 |
๋ฐฑ์ค 10828๋ฒ : ์คํ(S4) (0) | 2023.12.25 |
๋ฐฑ์ค 2164๋ฒ: ์นด๋2(S4) (2) | 2023.12.25 |