๋ฌธ์
์ ์ถ๋ ฅ ์์
๋ฌธ์ ๋ฅผ ์์ฝํ๋ฉด '๋ด ์ผ์ชฝ ์ธ๊ทผ์ ์์ผ๋ฉด์ ๋๋ณด๋ค ๋์ ํ์ ์ธ๋ฑ์ค ์ถ๋ ฅ'์ด๋ผ๊ณ ํ ์ ์๊ฒ ๋ค. '์ธ๊ทผ'์ด๋ผ๋ ํํ์ ์ด ์ด์ ๋ ๋์ด๊ฐ 4์ธ ๋ค์ฏ๋ฒ์งธ ํ์ฒ๋ผ ์ผ์ชฝ์ ์๋ ํ๋ค ์ค ๋๋ณด๋ค ๋์ ํ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. 7๋ณด๋ค ๋ ๋์ ํ์ด ์์ง๋ง 4๊ฐ ์ ๋ ์ด์ ์ ํธ๋ ์ด๋ฏธ 7์ ๋ฟ์์ผ๋ฏ๋ก 7์ ์ธ๋ฑ์ค ๋ฒํธ+1์ ์ถ๋ ฅํ๋ฉด ๋๋ค.
ํ์ด
โ ์ฒซ ๋ฒ์งธ ์๋(์๊ฐ ์ด๊ณผ)
import sys
from collections import deque
N = int(input())
tower = list(map(int, sys.stdin.readline().split()))
received = [0]
for i in range(1, N):
candidate = deque(tower[:i])
flag = 0
if max(candidate) <= tower[i]:
received.append(0)
else:
while flag == 0:
if candidate[-1] < tower[i]:
candidate.pop()
else:
flag = tower.index(candidate.pop())+1
received.append(flag+1)
print(*received)
์ฝ๋ ํ๋ฆ ๊ฐ๋จ ์ค๋ช ์ฉ ์ ์๊ธ
1. ํ ๊ฐ์๋งํผ for๋ฌธ์ ๋๋ฆฌ๋๋ฐ ๊ฐ for๋ฌธ ์์์ ์ฌ๋ผ์ด์ฑ์ ์ด์ฉํด i๋ฒ์งธ ํ๊ณผ ๋น๊ตํ ํ ๋ชฉ๋ก(candidate) ์์ฑ
2. candidate์ max ๊ฐ์ด ํ์ฌ ํ ๋์ด๋ณด๋ค ์์ ๊ฒฝ์ฐ ๋ ์ด์ ๋ฅผ ์์ ํ ํ์ด ์๋ค๋ ๋ป์ด๊ธฐ ๋๋ฌธ์ ์ ๋ต ์ ์ฅ์ฉ ๋ฐฐ์ด์ 0 append
3-1. ํ์ฌ ํ์ ๋ ์ด์ ์ ํธ๋ฅผ ๋ฐ์ ํ ํ์ธ์ฉ flag๊ฐ 0์ผ ๋๋ง while๋ฌธ ๋ฐ๋ณต
3-2. candidate์ ๋ง์ง๋ง ํ ๋์ด๊ฐ ํ์ฌ ํ ๋์ด๋ณด๋ค ๋ฎ์ ๊ฒฝ์ฐ candidate์์ ๋นผ๋ฒ๋ฆฌ๊ณ ๋ค์์๋ถํฐ ํ ๋์ด ์ฒดํฌ
์ด ํ๋ฆ์์ ํฌ๊ฒ ๋ณํ์ง ์๊ณ ๋ช ๋ฒ ๋ ์๋ํด๋ดค๋๋ฐ๋ ๊ณ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ด๋ค. 'for๋ฌธ์ด ํ๋ ๋ฐ์ ์๋๋ฐ ์ด๋์ ์๊ฐ ์ด๊ณผ๊ฐ ๊ฑธ๋ฆฌ์ง?' ์ด ์๊ฐ์ ๊ณ์ ํด๋ณด๋ค๊ฐ ์ค์ค๋ก ๋ต์ ์ฐพ์ง ๋ชปํด ๋ฐฑ์ค ์ง๋ฌธ ๊ฒ์๋๊ณผ ๊ตฌ๊ธ์ ๋์์ ๋ฐ์๋ค.
์ ๋ง ์๊ฐ์ง๋ ๋ชปํ๋๋ฐ ์๊ฐ ์ด๊ณผ์ ์์ธ์ ์ฌ๋ผ์ด์ฑ์ด์๋ค. N๊ฐ์ ์์์ ๋ํด ๋งค๋ฒ ์ฌ๋ผ์ด์ฑ์ ํ๊ธฐ ๋๋ฌธ์ ๋ณด์ด๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ ์ค์ง์ ์ธ ์๊ฐ๋ณต์ก๋๋ O(N^2)์ด ๋๋ค๊ณ ํ๋ค. ํผ์์๋ ์ ๋ ๋ชป ์์์ฑ์ ๋ฏ
๐ ๋ค ๋ฒ์งธ ์๋(์คํ ํ์ฉ, ์ฑ๊ณต)
import sys
from collections import deque
N = int(sys.stdin.readline().rstrip())
tower = list(map(int, sys.stdin.readline().split()))
stack = []
received = [0 for _ in range(N)]
for i in range(N):
while stack:
if stack[-1][1] <= tower[i]:
stack.pop()
else:
received[i] = stack[-1][0]
break
stack.append([i+1, tower[i]])
print(*received)
ํ์ด์ฌ์์ ์ฌ์ฉํ๋ ์คํ์ append(), pop()๋ง ์ธ ์ค ์๋ฉด ๋๋ค๊ณ ์๊ฐํ์ง ์ ๋๋ก ํ์ฉํ์ง ๋ชปํ๋ค. ํ ์ธ๋ฑ์ค์ ๋์ด๋ฅผ ํ๊บผ๋ฒ์ ์ ์ฅํด๋๊ณ ์คํ์ ๋ง์ง๋ง ์์๋ฅผ ๊บผ๋ด๋ฉด์ ํ์ฌ ๋์ด์ ๋น๊ตํด์ฃผ๋ฉด ์ฌ๋ผ์ด์ฑ์ ์ธ ๋์ฒ๋ผ ๋งค๋ฒ ์๋ก์ด ์์๋ฅผ ์์ฑํ ํ์๊ฐ ์๋ค. ํญ์ ์๊ฐ์ ํ๊ณ ๋ฌธ์ ๋ฅผ ํ์ ๐
'Problem Solving > BOJ & Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ๋ฌธ์์ด ๋๋๊ธฐ (0) | 2022.12.12 |
---|---|
[Programmers] ๋ ํ ํฉ ๊ฐ๊ฒ ๋ง๋ค๊ธฐ (0) | 2022.11.23 |
[BOJ] 2775๋ฒ: ๋ถ๋ ํ์ฅ์ด ๋ ํ ์ผ (0) | 2022.03.23 |
[BOJ] 11256๋ฒ: Jelly Bean (0) | 2022.02.03 |
[BOJ] 5177๋ฒ: Format Error! (0) | 2022.02.03 |