์ฝ๋ฉ ํ ์คํธ ์ฐ์ต - ํ (Heap)
<์ด์ค์ฐ์ ์์ํ>
๋ฌธ์ ์ค๋ช
์ด์ค ์ฐ์ ์์ ํ๋ ๋ค์ ์ฐ์ฐ์ ํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋งํฉ๋๋ค.
๋ช ๋ น์ด ์์ ํ(๋์ด) I ์ซ์ ํ์ ์ฃผ์ด์ง ์ซ์๋ฅผ ์ฝ์ ํฉ๋๋ค. D 1 ํ์์ ์ต๋๊ฐ์ ์ญ์ ํฉ๋๋ค. D -1 ํ์์ ์ต์๊ฐ์ ์ญ์ ํฉ๋๋ค.
์ด์ค ์ฐ์ ์์ ํ๊ฐ ํ ์ฐ์ฐ operations๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
๋ชจ๋ ์ฐ์ฐ์ ์ฒ๋ฆฌํ ํ ํ๊ฐ ๋น์ด์์ผ๋ฉด [0,0] ๋น์ด์์ง ์์ผ๋ฉด [์ต๋๊ฐ, ์ต์๊ฐ]์ return ํ๋๋ก
solution ํจ์๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- operations๋ ๊ธธ์ด๊ฐ 1 ์ด์ 1,000,000 ์ดํ์ธ ๋ฌธ์์ด ๋ฐฐ์ด์ ๋๋ค.
- operations์ ์์๋ ํ๊ฐ ์ํํ ์ฐ์ฐ์ ๋ํ๋ ๋๋ค.
: ์์๋ “๋ช ๋ น์ด ๋ฐ์ดํฐ” ํ์์ผ๋ก ์ฃผ์ด์ง๋๋ค.
- ์ต๋๊ฐ/์ต์๊ฐ์ ์ญ์ ํ๋ ์ฐ์ฐ์์ ์ต๋๊ฐ/์ต์๊ฐ์ด ๋ ์ด์์ธ ๊ฒฝ์ฐ, ํ๋๋ง ์ญ์ ํฉ๋๋ค.
- ๋น ํ์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ผ๋ ์ฐ์ฐ์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ, ํด๋น ์ฐ์ฐ์ ๋ฌด์ํฉ๋๋ค.
๋ฌธ์ ํ์ด
- my solution
import heapq
def solution(operations):
result = []
for i in operations:
x = i.split()
if x[0] == "I": # ์ซ์ ์ฝ์
heapq.heappush(result, int(x[1]))
elif x[0] == "D":
if x[1] == "-1": # ์ต์๊ฐ ์ญ์
if len(result)!=0:
heapq.heappop(result)
else: # ์ต๋๊ฐ ์ญ์
temp = []
for j in result: # ์ต๋ ํ ๋ง๋ค๊ธฐ
heapq.heappush(temp, -int(j))
if len(temp) != 0: # ๋น์ด์์ง ์์ผ๋ฉด ์ญ์
heapq.heappop(temp)
result = []
for j in temp: # ์๋๋๋ก
heapq.heappush(result, -j)
answer=[]
if len(result) == 0: #ํ๊ฐ ๋น์ด์์ผ๋ฉด
answer = [0, 0]
else: # ๋น์ด์์ง ์์ผ๋ฉด
k = heapq.heappop(result) # ์ต์๊ฐ
temp = []
for j in result: # ์ต๋ ํ
heapq.heappush(temp, -j)
answer.append(-heapq.heappop(temp)) # ์ต๋๊ฐ
answer.append(k) # ์ต์๊ฐ
return answer
1) split์ ํตํ์ฌ ๋ถ๋ฆฌํ์ฌ ๋ช ๋ น์ด๊ฐ I ์ผ ๋, D ์ผ ๋๋ฅผ ๊ตฌ๋ถํ์ฌ ๊ตฌํ
์๊ฐ๐ค
Level 3์ด์์ง๋ง ํฌ๊ฒ ์ด๋ ต์ง ์์๋ ๋ฌธ์ ์๋ค. ๋ ๋ฒจ์ด ๋์ ๋ฌธ์ ํด๋ฆญํ๊ธฐ ์ด๋ ค์ ์ ๋ฟ...
์ต๊ทผ์ heapq์ ๋ํ์ฌ ๋ฌธ์ ๋ฅผ ํ์ด๋ดค๋ ๊ฒ์ด ํฌ๊ฒ ๋์์ด ๋์๋ค.
์์์ ์ฝ๋ ์ค๋ช ์ด ์งง์๋ ๊ฒ๋, heapq๋ง ์๋ฉด ์ฝ๊ฒ ํ ์ ์์ ๊ฑฐ๋ผ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ด๊ฐ ์๊ฐํ๊ธฐ์ ์ด ๋ฌธ์ ์ ํฌ์ธํธ๋
1) heapq ์ฌ์ฉ
2) ์ต์ ํ, ์ต๋ ํ
์ธ ๊ฒ ๊ฐ๋ค. ๋คํํ๋ ์ต์ ํ, ์ต๋ ํ์ ๊ตฌํํ ์ค ์๊ธฐ์ ๋นจ๋ฆฌ ํด๊ฒฐํ ์ ์์๋ค.
ํ์ง๋ง, ์ด์ง ์๋ฌธ์ ์ด ๋๋ ๊ฒ์, '์ต์ ํ์ด ๊ตฌํ๋ ์ํ์์ ์ต๋ ํ์ ๊ตฌํํ ๋
๋ชจ๋ ์์์ ๊ฐ์ ๊ฐ์ ธ์ ์ต๋ ํ์ผ๋ก ๋ค์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ๋ฐ์ ์๋๊ฐ?'์๋ค.
์กฐ๊ธ ๋ ๊ณต๋ถํด๋ด์ผ๊ฒ ๋ค๐ฅ
๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์ป์ ๊ฒ
1. heapq
2. ์ต๋ ํ, ์ต์ ํ
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต, https://programmers.co.kr/learn/challenges
'๐Algorithm > ๐ฅprogrammers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[programmers] [3์ฐจ] ํ์ผ๋ช ์ ๋ ฌ - 2018 KAKAO BLIND RECRUITMENT (0) | 2021.09.04 |
---|---|
[programmers] ํํ -2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ (0) | 2021.09.04 |
[programmers] ์ ์ ์ผ๊ฐํ (0) | 2021.08.23 |
[programmers] ํ๊ฒ ๋๋ฒ (0) | 2021.04.04 |
[programmers] ์ ๊ท ์์ด๋ ์ถ์ฒ - 2021 KAKAO BLIND RECRUITMENT (0) | 2021.01.27 |