โ๋ฌธ์
https://www.acmicpc.net/problem/2493
๋ฉ๋ชจ๋ฆฌ: 115756 KB, ์๊ฐ: 560 ms
์๋ฃ ๊ตฌ์กฐ, ์คํ
KOI ํต์ ์ฐ๊ตฌ์๋ ๋ ์ด์ ๋ฅผ ์ด์ฉํ ์๋ก์ด ๋น๋ฐ ํต์ ์์คํ ๊ฐ๋ฐ์ ์ํ ์คํ์ ํ๊ณ ์๋ค. ์คํ์ ์ํ์ฌ ์ผ์ง์ ์์ N๊ฐ์ ๋์ด๊ฐ ์๋ก ๋ค๋ฅธ ํ์ ์ํ ์ง์ ์ ์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ ๋ฐฉํฅ์ผ๋ก ์ฐจ๋ก๋ก ์ธ์ฐ๊ณ , ๊ฐ ํ์ ๊ผญ๋๊ธฐ์ ๋ ์ด์ ์ก์ ๊ธฐ๋ฅผ ์ค์นํ์๋ค. ๋ชจ๋ ํ์ ๋ ์ด์ ์ก์ ๊ธฐ๋ ๋ ์ด์ ์ ํธ๋ฅผ ์งํ๋ฉด๊ณผ ํํํ๊ฒ ์ํ ์ง์ ์ ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก ๋ฐ์ฌํ๊ณ , ํ์ ๊ธฐ๋ฅ ๋ชจ๋์๋ ๋ ์ด์ ์ ํธ๋ฅผ ์์ ํ๋ ์ฅ์น๊ฐ ์ค์น๋์ด ์๋ค. ํ๋์ ํ์์ ๋ฐ์ฌ๋ ๋ ์ด์ ์ ํธ๋ ๊ฐ์ฅ ๋จผ์ ๋ง๋๋ ๋จ ํ๋์ ํ์์๋ง ์์ ์ด ๊ฐ๋ฅํ๋ค.
์๋ฅผ ๋ค์ด ๋์ด๊ฐ 6, 9, 5, 7, 4์ธ ๋ค์ฏ ๊ฐ์ ํ์ด ์ํ ์ง์ ์ ์ผ๋ ฌ๋ก ์ ์๊ณ , ๋ชจ๋ ํ์์๋ ์ฃผ์ด์ง ํ ์์์ ๋ฐ๋ ๋ฐฉํฅ(์ผ์ชฝ ๋ฐฉํฅ)์ผ๋ก ๋์์ ๋ ์ด์ ์ ํธ๋ฅผ ๋ฐ์ฌํ๋ค๊ณ ํ์. ๊ทธ๋ฌ๋ฉด, ๋์ด๊ฐ 4์ธ ๋ค์ฏ ๋ฒ์งธ ํ์์ ๋ฐ์ฌํ ๋ ์ด์ ์ ํธ๋ ๋์ด๊ฐ 7์ธ ๋ค ๋ฒ์งธ ํ์ด ์์ ์ ํ๊ณ , ๋์ด๊ฐ 7์ธ ๋ค ๋ฒ์งธ ํ์ ์ ํธ๋ ๋์ด๊ฐ 9์ธ ๋ ๋ฒ์งธ ํ์ด, ๋์ด๊ฐ 5์ธ ์ธ ๋ฒ์งธ ํ์ ์ ํธ๋ ๋์ด๊ฐ 9์ธ ๋ ๋ฒ์งธ ํ์ด ์์ ์ ํ๋ค. ๋์ด๊ฐ 9์ธ ๋ ๋ฒ์งธ ํ๊ณผ ๋์ด๊ฐ 6์ธ ์ฒซ ๋ฒ์งธ ํ์ด ๋ณด๋ธ ๋ ์ด์ ์ ํธ๋ ์ด๋ค ํ์์๋ ์์ ์ ํ์ง ๋ชปํ๋ค.
ํ๋ค์ ๊ฐ์ N๊ณผ ํ๋ค์ ๋์ด๊ฐ ์ฃผ์ด์ง ๋, ๊ฐ๊ฐ์ ํ์์ ๋ฐ์ฌํ ๋ ์ด์ ์ ํธ๋ฅผ ์ด๋ ํ์์ ์์ ํ๋์ง๋ฅผ ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
โ๐ปํ์ด
ํ์ ์์ฐจ์ ์ผ๋ก ๋๋ฉด์ ์คํ์ top์ด ํ๋ณด๋ค ์๋ค๋ฉด ํ์ฌ ํ์ ๋์ด๋ฅผ ์คํ์ ๋ฃ์ผ๋ฉด ๋๋ค. ๋ง์ฝ ์คํ์ top์ด ํ๋ณด๋ค ํฌ๋ค๋ฉด ํด๋น ํ์ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ๋กํ๊ณ ๋ฉ์ถ๋ฉด ๋๋ค.
๐ป์ฝ๋
์ฒ์ ์ ์ถ ์ฝ๋
import sys
input = sys.stdin.readline
N = int(input())
top = list(map(int, input().split()))
res = [0] * N
temp = []
for i in range(N):
while temp and temp[-1][1] < top[i]:
temp.pop()
if temp:
res[i] = temp[-1][0]
temp.append((i+1, top[i]))
print(*res)
์ ๋ฆฌํ ์ฝ๋
import sys
input = sys.stdin.readline
N = int(input())
top = list(map(int, input().split()))
res = [0] * N
temp = []
for i in range(N):
while temp:
if temp[-1][1] > top[i]:
res[i] = temp[-1][0]
break
else:
temp.pop()
temp.append((i+1, top[i]))
print(*res)
๐ํ๊ธฐ
์ฒ์์ ๋ค์์๋ถํฐ ํ์ธํ ์ง ์์์๋ถํฐ ํ์ธํ ์ง ๊ต์ฅํ ๊ณ ๋ฏผ์ ๋ง์ด ํ๋ค. ๊ทธ๋๋ ๊ฒฐ๊ตญ ํด๋ด๊ธด ํ์ง๋ง ์ฝ๋๊ฐ ๊น๋ํ์ง๋ ๋ชปํ๋คใ ์ ๋ ์ฝ๋ ๋ค ์ ๋ต์ด๊ธด ํ์ง๋ง ์ ๋ฆฌํ ํ๊ฐ ํ์คํ ๊น๋ํ ๊ฒ ๊ฐ๊ณ ์๊ฐ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์์๋ ๋ ๋์ ๊ฒ ๊ฐ๋ค.
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]14940. ์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ/Python - Silver1 (0) | 2025.03.10 |
---|---|
[๋ฐฑ์ค] 17298.์คํฐ์/Python - Gold4 (0) | 2025.03.07 |
[๋ฐฑ์ค] 1202. ๋ณด์ ๋๋/Python - Gold2 (0) | 2025.02.28 |
[๋ฐฑ์ค] 1655. ๊ฐ์ด๋ฐ๋ฅผ ๋งํด์/Python - Gold2 (0) | 2025.02.26 |
[๋ฐฑ์ค] 1715. ์นด๋ ์ ๋ ฌํ๊ธฐ/Python - Gold4 (0) | 2025.02.26 |