๐ค ํ์ด ์ฝ๋
from collections import deque
def solution(numbers):
answer = [-1 for i in range(len(numbers))]
stack = deque()
for idx, now in enumerate(numbers):
if not stack:
stack.append([idx, now])
continue
top_idx, top_now = stack[-1]
while stack and now > top_now:
stack.pop()
answer[top_idx] = now
if stack:
top_idx, top_now = stack[-1]
stack.append([idx, now])
return answer
๐ค ๋ฌธ์ ํ์ด
์ฐ์ , ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ณด๋ฉด numbers์ ๊ธธ์ด๋ ์ต๋ 100๋ง์ ๋๋ค. ์ฆ, 2์ค for๋ฌธ์ ์ฌ์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์ดํ๋ฉด ์๊ฐ๋ณต์ก๋ ์ธก๋ฉด์์ ํต๊ณผํ์ง ๋ชปํฉ๋๋ค.
์ด์ค for๋ฌธ์ ๊ตฌํ์ผ๋ก ๋ณด๋ฉด, ํ์ฌ ์๋ฅผ ์ ํํ๊ณ ๋ค์ ๋ชจ๋ ์์ ๋น๊ตํด์ ๋ค ํฐ์๋ฅผ ์ฐพ๋ ์์ผ๋ก ๊ตฌํํ ์ ์๊ฒ ์ง๋ง,
์ต์ ์ ๊ฒฝ์ฐ๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ๊ฒฝ์ฐ์ ๋๋ค.
[100๋ง, 999999, 999998, ... 1]๊ณผ ๊ฐ์ ์์๊ฐ ์๋ค๋ฉด, ์๊ฐ๋ณต์ก๋๊ฐ ์ต๊ณ ๋ก ๋์ ์ฐ์ฐ์ ํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํฉ๋๋ค.
์ ๊ฐ ์ ํํ ๋ฐฉ๋ฒ์ ์คํ(Stack)์ ํ์ฉํ๋ ๊ฒ์ ๋๋ค.
์ฐ์ result์ ๊ฐ์ ๋ชจ๋ -1๋ก ์ด๊ธฐํ ์ํจ ํ, numbers์ ์ซ์๋ค์ ๋ํด Stack์์ ๊ด๋ฆฌํฉ๋๋ค.
์คํ์ ๋ฃ๋ ์๋ [ํ์ฌ ์ซ์์ ์ธ๋ฑ์ค, ํ์ฌ ์ซ์]๋ฅผ ๋ฃ์ต๋๋ค.
์คํ์ด ๋น์ด์๋ค๋ฉด, ๊ทธ๋ฅ ๋ฃ์ด์ค๋๋ค.
์คํ์ด ๋น์ด์์ง ์๋ค๋ฉด, ์คํ์ top๊ณผ ํ์ฌ ๊ฐ์ ๋น๊ตํฉ๋๋ค. ํ์ฌ ๊ฐ์ด ๋ ํฌ๋ค๋ฉด, ๋ค ํฐ์์ ํด๋นํ๋ฏ๋ก, pop ์ฐ์ฐ์ ํตํด ์คํ์ ๋ด์ฉ์ ๊บผ๋ด๊ณ , ๋ด์ฉ๋ฌผ์ด ๊ฐ์ง๊ณ ์๋ ์ธ๋ฑ์ค๋ฅผ ํตํด result์ ๊ฐ์ ํ์ฌ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
์ด๋, ๊น๋ ค์๋ ์์์ ๋ํด์๋ ์์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ while๋ฌธ์ผ๋ก ๊ณ์ํด์ ๋น๊ตํฉ๋๋ค.
์์ ๊ฐ์ ์์ ์ด ๋๋๋ฉด, ํ์ฌ ์ซ์์ ๋ํด์๋ ๋ค ํฐ์๋ฅผ ์ฐพ์์ผ ํ๊ธฐ ๋๋ฌธ์ stack์ ๋ฃ์ต๋๋ค.
'๐ ์ฝ๋ฉํ ์คํธ ๋๋น : PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๋์คํฌ ์ปจํธ๋กค๋ฌ (level3, python) (0) | 2023.04.10 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ๋ ฅ๋ง์ ๋๋ก ๋๋๊ธฐ (level2, python) (0) | 2023.04.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฐ์ ๋ถ๋ถ ์์ด ํฉ์ ๊ฐ์ (level2, python) (0) | 2022.10.14 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋๋์ง (level4, python) (0) | 2022.10.14 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํฐ์ปค ๋ชจ์ผ๊ธฐ(2) (level3, python) (0) | 2022.10.14 |