โ๋ฌธ์
https://www.acmicpc.net/problem/17298
๋ฉ๋ชจ๋ฆฌ: 205056 KB, ์๊ฐ: 1140 ms
์๋ฃ ๊ตฌ์กฐ, ์คํ
ํฌ๊ธฐ๊ฐ N์ธ ์์ด A = A1, A2, ..., AN์ด ์๋ค. ์์ด์ ๊ฐ ์์ Ai์ ๋ํด์ ์คํฐ์ NGE(i)๋ฅผ ๊ตฌํ๋ ค๊ณ ํ๋ค. Ai์ ์คํฐ์๋ ์ค๋ฅธ์ชฝ์ ์์ผ๋ฉด์ Ai๋ณด๋ค ํฐ ์ ์ค์์ ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์๋ฅผ ์๋ฏธํ๋ค. ๊ทธ๋ฌํ ์๊ฐ ์๋ ๊ฒฝ์ฐ์ ์คํฐ์๋ -1์ด๋ค.
์๋ฅผ ๋ค์ด, A = [3, 5, 2, 7]์ธ ๊ฒฝ์ฐ NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1์ด๋ค. A = [9, 5, 4, 8]์ธ ๊ฒฝ์ฐ์๋ NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1์ด๋ค.
โ๐ปํ์ด
์ค๋ฅธ์ชฝ์ ์๋ ์๋ค ์ค ํฌ๋ฉด์ ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ์ฆ ํ์ฌ ์์น์์ ๋ฐ๋ก ์ค๋ฅธ์ชฝ์ ์๋ ์๊ฐ ์ค๋ฅธ์ชฝ์ ์๋ ์๋ค ์ค ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์์ด๋ค. ๊ทธ๋ฌ๋ ์ค๋ฅธ์ชฝ์ ์๋ ์๊ฐ ํญ์ ํ์ฌ ์๋ณด๋ค ํฐ ๊ฒ์ ์๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ฐ๋ก ์ค๋ฅธ์ชฝ ์๊ฐ ์๋ค๋ฉด ์คํ์ ํ์ฌ ์์น์ ๊ฐ์ด ๋ฃ๋๋ค. ๋ค์ ์๋ก ๋์ด๊ฐ ๋จผ์ ์ค๋ฅธ์ชฝ์ ์๋ ์๊ฐ ํ์ฌ ์๋ณด๋ค ํฐ์ง ํ์ธํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ก ์ค๋ฅธ์ชฝ ์๊ฐ ํฌ๋ค๋ฉด ๋ง์ฐฌ๊ฐ์ง๋ก ์ด ์๋ฅผ ์คํฐ์๋ก ๊ธฐ๋กํ๋ค. ์ด ๋, ์คํ์ ์์ง ์คํฐ์๋ฅผ ์ฐพ์ง ๋ชปํ ์๋ค์ด ์๋ค๋ฉด ํ์ฌ ์์ ์คํฐ์๋ฅผ ์คํ์ ์๋ ์๋ค์ ์คํฐ์๋ก ๊ธฐ๋กํ๋ค. ์ด ๋, ์คํ์ ์๋ ์๊ฐ ํ์ฌ ์์ ์คํฐ์๋ณด๋ค ์์์ผ ํ๋ค.
์ด 4๊ฐ์ ์ 10, 8, 5, 9๊ฐ ์ฃผ์ด์ก๋ค๊ณ ๊ฐ์ ํด๋ณด์.
10์ ์ค๋ฅธ์ชฝ ์๋ฅผ ๋ณด๋ฉด 8์ด๋ฏ๋ก ์คํฐ์๊ฐ ๋ ์ ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์คํ์ (0, 10)์ ๋ฃ๋๋ค. ๋์ด๊ฐ์ 8์ ์ค๋ฅธ์ชฝ ์๋ 7์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก 8๋ ์คํฐ์๋ฅผ ์ฐพ์ง ๋ชปํ์ผ๋ฏ๋ก ์คํ์ ๋ค์ด๊ฐ๋ค. ์ด์ 5๋ฅผ ๋ณด๋ฉด 5์ ์ค๋ฅธ์ชฝ ์๋ 9๋ก ์ด ์๋ ์คํฐ์๊ฐ ๋๋ค. ์ด ๋, ์คํ์ ์คํฐ์๋ฅผ ์ฐพ์ง ๋ชปํ๊ณ ๋จ์์๋ ์ 8๊ณผ 10์ด ์๋ค. 9๋ 8์ ์คํฐ์๊ฐ ๋๋ค. ๊ทธ๋ฌ๋ 9๋ 10์ ์คํฐ์๊ฐ ๋ ์ ์์ผ๋ฏ๋ก 10์ ์คํฐ์๋ฅผ ์ฐพ์ง ๋ชปํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก 10์ -1์ด ๋๊ณ , 9๋ ์ค๋ฅธ์ชฝ์ ๋ ์ด์ ์๊ฐ ์์ผ๋ฏ๋ก ์คํฐ์๋ฅผ ์ฐพ์ ์ ์์ด -1์ด ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก -1, 9, 9, -1์ด ๋๋ค.
๐ป์ฝ๋
import sys
input = sys.stdin.readline
n = int(input())
A = list(map(int, input().split()))
st = []
res = [-1] * n
for i in range(n-1):
if A[i] < A[i+1]:
res[i] = A[i+1]
while st and st[-1][1] < A[i+1]:
res[st.pop()[0]] = A[i+1]
else:
st.append((i, A[i]))
print(*res)
๐ํ๊ธฐ
๋ญ๊ฐ ์์ง ๋ฌธ์ ํ ๋ ์ด ์๋ฃ๊ตฌ์กฐ์ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์จ์ผ ํ ์ง๋ ์๊ฐ์ ๋ชป ํ๊ณ ๋ ๊ทธ๋ฅ ์ต์ ๋ง ์๊ฐํ๋ ๊ฒ ๊ฐ๋ค.
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2800. ๊ดํธ ์ ๊ฑฐ/Python - Gold4 (0) | 2025.03.18 |
---|---|
[๋ฐฑ์ค]14940. ์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ/Python - Silver1 (0) | 2025.03.10 |
[๋ฐฑ์ค] 2493. ํ/Python - Gold5 (0) | 2025.03.01 |
[๋ฐฑ์ค] 1202. ๋ณด์ ๋๋/Python - Gold2 (0) | 2025.02.28 |
[๋ฐฑ์ค] 1655. ๊ฐ์ด๋ฐ๋ฅผ ๋งํด์/Python - Gold2 (0) | 2025.02.26 |