ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ญ ๊ธธ๊ฒ ์์ฑํ ํ์์์ด ๋ฐ๋ก ๊ตฌํ ํด๋ณผ ์ ์์๊ฒ ๊ฐ์์ ์ฝ๋๋ก ๊ตฌํ์ ํ๋ค. (๋ด ๊ธ์จ ์์ ๋ฌ๋)
def solution(scoville, K):
answer = 0
while scoville[0] < K:
scoville.sort()
print("========================")
print("์ค์ฝ๋น: {}".format(scoville))
new_scoville = scoville[0] + (scoville[1]*2)
del scoville[0:2]
print("์ค์ฝ๋น: {}".format(scoville))
scoville.append(new_scoville)
answer+=1
if len(scoville) < 1:
return -1
return answer
scoville = [1, 2, 3, 9, 10, 12]
print(solution(scoville, 7))
์ ์ด๋ ๊ฒ ํ๋ฉด ์ํ๋ ๊ฐ์ ๋์ค๋๋ฐ
์ฝ๋ ์ฑ์ ์์ ํํ ํธ๋ฆฌ๊ณ ๋ง์๋ค. ๋ญ ํ์ด๋ ํ๋ฅผ ํ์ฉํด์ ํ์ด์ผํ๋๊ฑฐ๊ฐ์๋ฐ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์์ฉ? ์ด์ฉ? ํด์ ์ ์ฉ์ ํ์ง ๋ชปํ๊ฒ ๋ค. ๊ทธ๋ฌ๊ณ ๋ณด๋ ์ด์ ๊น์ง์ ๋ฌธ์ ๋ ์ ์ฉ์ ์ํ๊ฒ๊ฐ๋คใ ใ
์ฝ๋ ๋ฆฌ๋ทฐ
- ๋๋ฒ๊น ์ฉ ๋ก๊ทธ์ ํ ์คํธ ์ฝ๋๋ ์ง์ฐ๊ณ ์ ์ถํ๋ ๊ฒ์ด ์ข๋ค.
- ์คํผ๋ ์ดํฐ ์ฌ์ด๋ ํ ์นธ ๋์ฐ๊ณ ์์ฑํ๋ ๊ฒ์ด ์ข๋ค.
- ๋ ๋งต๊ฒ ๋ฌธ์ ๋ ํ ํน์ ์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํ์ฌ ํธ๋ ๋ฌธ์ ์ด๋ค. (sort๋ฅผ ์ด์ฉํ๋ ๊ฒ๋ณด๋ค ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ํจ์จ์ฑ ํ ์คํธ์์ ํต๊ณผํ ์ ์๋ค.)
- ์์ธ ์ฒ๋ฆฌ ํด์ฃผ๊ธฐ
์์ ํ ์ฝ๋
def solution(scoville, K):
answer = 0
while scoville[0] < K:
scoville.sort()
# print("========================")
# print("์ฒ์ ์ค์ฝ๋น: {}".format(scoville))
# ์ ํ์ฑ ํ
์คํธ๋ฅผ ์ํด ์ด ๋ถ๋ถ์ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ด์ผํ๋ค.
# ๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ๋๋ฒ์งธ๊ฐ ์กด์ฌํด์ผํจ...
try:
new_scoville = scoville[0] + (scoville[1]*2)
del scoville[0:2]
except IndexError as e:
break
# print("์ค์ฝ๋น: {}".format(scoville))
scoville.append(new_scoville)
answer += 1
if len(scoville) < 1 or scoville[0] < K:
return - 1
return answer
ํ ๋ชจ๋ ์ฌ์ฉํ๊ธฐ
Heap์ด๋ ์๋ฃ๊ตฌ์กฐ ํํ ์ค ํ๋๋ก์ ์ฐ์ ์์ ํ๋ฅผ ์ํด ๋ง๋ค์ด์ง ๊ตฌ์กฐ์ด๋ค. ์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ์ค ์ต์๊ฐ, ํน์ ์ต๋๊ฐ์ ๊ณ์ํด์ ํธ์ถํด์ผ ํ๋ ์ํฉ์ธ ๊ฒฝ์ฐ Heap ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํํ๋ฉด ์๊ฐ์ธก๋ฉด์์ ๊ต์ฅํ ํจ์จ์ ์ธ ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.
heapq ๋ชจ๋์ ์ด์ฉํ์ฌ ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. heapq ๋ ๋ด์ฅ ๋ชจ๋์ด๋ฏ๋ก ๋ฐ๋ก ์ค์นํ ํ์๊ฐ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Min-priority-queue ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
import heapq
๊ธฐ์กด ๋ฐฐ์ด์ Heap ๊ตฌ์กฐ๋ก - heapify()
testheap = [1,3,2,6,8,0,6]
heapq.heapify(testheap)
print(testheap)
# print ๊ฒฐ๊ณผ๊ฐ => Heap๊ตฌ์กฐ๋ก ๋ณํจ
[0,3,1,6,8,2,6]
Heap์ ์์ ์ถ๊ฐํ๊ธฐ - heappush(๋ฐฐ์ด์ด๋ฆ, ์์)
testheap = []
heapq.heappush(testheap, 3)
heapq.heappush(testheap, 5)
heapq.heappush(testheap, 1)
heapq.heappush(testheap, -3)
print(testheap)
# print ๊ฒฐ๊ณผ๊ฐ
[-3, 1, 3, 5]
Heap ์์๋ฅผ ์ญ์ ํ๊ธฐ - heappop(๋ฐฐ์ด์ด๋ฆ)
testheap = []
heapq.heappop(testheap)
heapq.heappop(testheap)
print(testheap)
# ๊ฒฐ๊ณผ๊ฐ
[3, 5]
์ญ์ ๋ฅผ ํด๋ ์๋์ผ๋ก ํ ๊ตฌ์กฐ๋ ์ ์ง๋๋ค.
MaxHeap ๊ตฌํํ๊ธฐ
๋ฐฉ๋ฒ 1
a = [3,5,2,4,1]
testheap = []
for i in a:
heapq.heappush(testheap, -i)
for i in range(5):
print(-heapq.heappop(testheap))
# print ๊ฒฐ๊ณผ
5
4
3
2
1
๋ฐฉ๋ฒ 2 - ํํ ์ด์ฉํ๊ธฐ
a = [3,5,2,4,1]
testheap = []
for i in a:
heapq.heappush(testheap, (-i,i))
for i in range(5):
print(heapq.heappop(testheap)[1])
# print ๊ฒฐ๊ณผ =>
5
4
3
2
1
ํ์ ์ด์ฉํ ๋ฌธ์ ํ์ด
# heap์ ์ฌ์ฉํ ํ์ด
def solution(scoville, K):
answer = 0
heapq.heapify(scoville)
while scoville[0] < K:
try:
heapq.heappush(scoville, heapq.heappop(scoville) + (heapq.heappop(scoville)*2))
answer += 1
except IndexError:
return -1
return answer
ํ์ ๊ทธ๋ ๊ตฌ๋จผ
Heap์ ์ด์ฉํ ๋ฌธ์ ๋ ๋ฆฌ์คํธ ์์๊ฐ ์์ฃผ ์ถ๊ฐ, ์ญ์ ๋๋ฉด์ ํญ์ ์ ๋ ฌ๋์ด์ผํ ๋ ๋ง์ด ์ฌ์ฉํ๋ค.
'๊ธฐ๋ก > ์ฝํ ์คํฐ๋ ๊ธฐ๋ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฐ๋ฌ (2) | 2020.07.13 |
---|---|
์ต๋ ์ฉ๋์ด ์ ํด์ง FIFO ํ ํด๋์ค (0) | 2020.07.13 |
๋ฐฐ์ ๋น์ฉ ์ต์ํ (0) | 2020.07.12 |
๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2020.07.11 |
๋ฌธ์์ด ์์ถ (0) | 2020.07.11 |
- Total
- Today
- Yesterday
- typeAliases
- ๊ฒ์ํ ์ญ์
- ์๋ฃ๊ตฌ์กฐ
- ๊ฐ๋ฐํ๊ฒฝ๊ตฌ์ถ
- ๋ถํธ ์๋์์ฑ
- ์ดํด๋ฆฝ์ค ์ค์น
- ๋ณ๋ช ์ฒ๋ฆฌ
- ๊ฒ์ํ๋ง๋ค๊ธฐ
- tomcat์ค์น
- java ํ๊ฒฝ๋ณ์
- ๊ฐ๋ฐ
- mysql์ค์น
- ๊ฒ์๋ฌผ ์ญ์
- ์ ์ฒด๊ฒ์๋ฌผ ์กฐํ
- ๊ฒ์ํ ์กฐํ
- ๊ฒ์๋ฌผ์กฐํ
- ์๋ฐ
- Java
- ์ดํด๋ฆฝ์ค ํ๊ธ ์ธ์ฝ๋ฉ
- ์จ๋ฆฌ์์ค
- java jdk ์ค์น
- ์๊ณ ๋ฆฌ์ฆ
- ์คํ๋ง๋ถํธ ์๋์์ฑ
- Algorithm
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |