Solution
๐ minheap์ ์ฌ์ฉ
๐ x๊ฐ 0 ์ด ์๋ ๋ heap ์๋ค๊ฐ ํํ(์ ๋๊ฐ, ์ง์ง๊ฐ) ๋ก ๊ฐ์ ๋ฃ๋๋ค. (์๋์ผ๋ก minheap ํํ๋ก ๋๋ค.)
๐ x๊ฐ 0 ์ผ๋ ์ถ๋ ฅ์ ํด์ค์ผ ํ๋๋ฐ, ๋ง์ฝ ๋ค์ด์๋ ๊ฐ์ด ์๋ค๋ฉด 0์ ์ถ๋ ฅํด์ฃผ๊ณ ๊ทธ๊ฒ ์๋ ์์๋ pop ํด์ฃผ๋ฉด ๋๋ค.(์๋์ผ๋ก ๊ฐ์ฅ ์์ ๋ ธ๋์ธ min ๊ฐ์ด ํ ๋๋ค.) - ์ด๋ pop ์ํค๋ฉด์ ํด๋น ํํ ๊ฐ์ k ๋ณ์์ ์ ์ฅํด๋์๋ค๊ฐ k์ ์ธ๋ฑ์ค 1๋ฒ ๊ฐ์ ์ถ๋ ฅํด์ค๋ค.(์ ๋๊ฐ ์๋ ์ง์ง ๊ฐ!)
TIP
๐ import heapq
๐ sys.stdin.readline
๐ heapq.heappush(๋ฆฌ์คํธ, ๊ฐ) / heapq.heapop(๋ฆฌ์คํธ)
๐ heapq ๋ ๋ฆฌ์คํธ๋ฅผ ์ ์ธํ๊ณ ๊ทธ ๋ฆฌ์คํธ๋ฅผ ์ธ์๋ก ๋ฃ์ด ์ฃผ๋ ์์ผ๋ก ์ฌ์ฉํ๋ค๋ ์ !
์ ๋ต ํ์ด
# ์ ๋๊ฐ ํ
import heapq,sys
pq = []
n = int(sys.stdin.readline()) # 1<= <=100000
for i in range(n):
x = int(sys.stdin.readline()) # -2^31 ~ 2^31
if(x == 0):
# ๋ฐฐ์ด์์ ์ ๋๊ฐ ๊ฐ์ฅ ์์ ๊ฐ ์ถ๋ ฅ
if(len(pq)==0):
print(0)
else:
k = heapq.heappop(pq)
print(k[1])
else:
# x๋ผ๋ ๊ฐ ๋ฃ๊ธฐ
heapq.heappush(pq,(abs(x),x))
๐ํ์ด์ฌ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ ๋ ์ฌ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ ๊ตฌํ ๋ฐฉ๋ฒ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
'CodingTest' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python]๋ฐฑ์ค 2346 ::ํ์ ํฐ๋จ๋ฆฌ๊ธฐ ๋ฌธ์ ํ์ด (0) | 2021.05.12 |
---|---|
[Python]๋ฐฑ์ค 1158 ::์กฐ์ธํผ์ค ๋ฌธ์ ํ์ด (0) | 2021.05.12 |
[Python]๋ฐฑ์ค 5397::ํค๋ก๊ฑฐ ํ์ด (0) | 2021.05.04 |
[Python]๋ฐฑ์ค 2162::์นด๋2 (0) | 2021.05.04 |
[Python]๋ฐฑ์ค 9012::๊ดํธ ๋ฌธ์ ํ์ด (0) | 2021.05.04 |
๋๊ธ