๋ฌธ์ ๋งํฌ
https://programmers.co.kr/learn/courses/30/lessons/42626/
๋์ํ์ด
์ด๋ฐ์๋ ๋ฆฌ์คํธ๋ฅผ ํ์ฉํด์ ์ต์๊ฐ์ ์ถ๋ ฅํ๊ณ , ๋ํด์ฃผ๊ณ ๋ฃ์ด์ฃผ๊ณ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ ค๊ณ ํ๋ค. ํ์ง๋ง, ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ถ๋ช ํ ์๊ฐ์ด๊ณผ, ํจ์จ์ฑํ ์คํธ๋ฅผ ํต๊ณผํ์ง ๋ชปํ ๊ฒ์ด๋ผ ์๊ฐํ๋ค. ๊ทธ๋์ ์ผ๋จ ๋ฐ๋ก heapq์ ๋ํด์ ์ฐพ์๋ณด์๋ค.
heapq ๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์จ์ฑ ๊ฐ์ ์ด ๋ ์ ์๋ค๊ณ ์๊ฐ๋์๋ค. ๋ฐ๋ผ์ ์์ ๋ด๊ฐ ๋งํ ๋ฐฉ์์ ์งํ ๊ณผ์ ์ ๊ฐ์ง๋ง heappop์ํ์ฉํด์ ์ต์๊ฐ์ ์ฐพ๊ณ , ํ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ๊ธฐ๋ก ํ๋ค.
- 1์ฐจ์๋
- ์ฒซ๋ฒ์งธ ์๋๋ก ๊ตฌ์ฑํ ์ฝ๋๋ ํจ์จ์ฑํ ์คํธ๋ฅผ ๋จํ๋๋ ํต๊ณผํ์ง ๋ชปํ๋ค. ๊ทธ๋์ while๋ฌธ์ ์กฐ๊ฑด์ ๋ฃ์ด์ค์ ์ต์๋ก ๋๋ ค์ค์ผํ๋? ๊ณ ๋ฏผํ๋ฉฐ 2์ฐจ ์ฝ๋๋ฅผ ์งฐ๋ค.
- 2์ฐจ์๋
- ํจ์จ์ ์ด๊ฒ ์ ์งฏ๋ค๊ณ ์๊ฐํ๋๋ฐ 4๊ฐ์ ํ๋ ์ผ์ด์ค์์ ์๊ฐ์ด๊ณผ๊ฐ ๋ด๋ค. ์ด๋ฐ์๋ 2์ฐจ์ฝ๋์ ๋ฌธ์ ์ ์ ์์ง ๋ชปํ๋๋ฐ, ์ฝ๋์ ์จ๋ง๋ฏ ๋์ ์ฝ๋ ์์ฒด์ ๋ฌธ์ ๊ฐ ์์๋ค.
- 3์ฐจ์๋ ํ์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด์ ์ค๋ฅ๋ฅผ ์ฐพ์๋๋ค.
- 2์ฐจ์๋ ์ฝ๋์์ ์ฌ๊ธฐ๊ฐ ๋ฌธ์ ๋ผ๊ณ ์จ์๋ ๋ถ๋ถ์ ์ดํด๋ณด์.
- ์๊ฐํด๋ณด๋๊น answer = -1 ํ๋ฉด while๋ฌธ์ด ๋๋์ง ์๊ฒ๋๋ค . ์๋๋ฉด while๋ฌธ์กฐ๊ฑด์ k๊ฐ๋ณด๋ค ์์ผ๋ฉด ๊ณ์ ๋์๊ฐ๋๊น! ๊ทธ๋์ return -1๋ก ํด์ ๋์ด์ค์ผํจ์ ๊นจ๋ฌ์๋ค.
- 2์ฐจ ์ฝ๋ ๋์ผํ๊ฒ ์ฐ๊ณ , return -1๋ง ํด์ฃผ๋ฉด ํด๋น ์ฝ๋๋ ์ ๋ต์ฝ๋๊ฐ ๋๋ค.
- 3์ฐจ์ฝ๋
- 2์ฐจ์ฝ๋ ์ค๋ฅ๊ฐ ๋๊ณ ์ ์ค๋ฅ๊ฐ ๋ ๊น ์๊ฐํด๋ณด๋ค๊ฐ ๋ณ์๋ฅผ ๋๋ฌด ๋ง์ด์์ฑํด์ ๊ทธ๋ฐ๊ฐ? ํ๊ณ ๋ณ์๋ฅผ ๋ชจ๋ ์์ ๋ณธ ์ฝ๋์ด๋ค.
- ํ์ง๋ง ์ญ์ ๊ทธ๊ฑฐ๋ง ๊ณ ์ณ์๋ ํด๊ฒฐ๋์ง ์์๋ค. ์๋! 2์ฐจ์๋์์ ๋งํ๋ ๋ฌธ์ ๊ฐ ๊ฐ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ใ ใ ใ
- ์ฌ๊ธฐ์ ์์ ํ๋ฉด์ return -1์ ํด์ผํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค... ์๊ฐ์ด๊ณผ ์๋ฌ๋ฅผ ์์ ํ๋๊ฒ ๊ฐ์ฅ ํ๋ค๊ตฐ ใ
########################################################################
######1์ฐจ์๋ (๋ฐํ์์๋ฌ 6๊ฐ, ํจ์จ์ฑํ
์คํธ ๋ชจ๋ ํต๊ณผ x)
import heapq
def solution(scoville, k):
answer = 0
heapq.heapify(scoville)
while 1:
minNum = heapq.heappop(scoville)
if minNum >= k:
return answer
else:
minNum2 = heapq.heappop(scoville)
heapq.heappush(scoville, minNum + (minNum2*2)) #ํ์ popํ๋ฉด ์ญ์ , ๋ํด์ ๋ฃ์ด์ฃผ๋ ๊ณผ์ ๋ฐ๋ณต
answer += 1 #๋ํด์ฃผ๋ฉด ๊ฒฐ๊ด๊ฐ +1
if scoville[0] > k:
return answer
else:
return -1
##############################################################################
######2์ฐจ์๋ (์๊ฐ์ด๊ณผ 4๊ฐ, ํจ์จ์ฑํ
์คํธ ๋ชจ๋ ํต๊ณผ) --> ํด๊ฒฐ์ฑ
์ฐพ์ (return ๋ถ๋ถ)
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville)
while scoville[0] < K:
if len(scoville) > 1:
minNum = heapq.heappop(scoville)
minNum2 = heapq.heappop(scoville)
heapq.heappush(scoville, minNum + (minNum2*2))
answer += 1
else:
answer = -1 ## ๐๐ฝ๐๐ฝ๐๐ฝ๐๐ฝ๐๐ฝ ์ฌ๊ธฐ๊ฐ ๋ฌธ์
return answer
##############################################################################
##3์ฐจ์๋ -> ํน์ ๋ณ์๊ฐ ๋ง์์ ๊ทธ๋ฐ๊ฐ ํ๊ณ ๋ณ์์์ ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ค์ด๊ณ ํด๋ดฃ๋๋ฐ ์๋, return์ด ๋ฌธ์ ์์
import heapq
def solution(scoville, K):
heapq.heapify(scoville)
answer = 0
while scoville[0] < K:
if len(scoville) > 1:
heapq.heappush(scoville, heapq.heappop(scoville) + (heapq.heappop(scoville)*2))
answer += 1
else:
return -1
return answer
๋ค๋ฅธ์ฌ๋ ํ์ด
https://programmers.co.kr/learn/courses/30/lessons/42626/solution_groups?language=python3&type=all
๋ค๋ฅธ์ฌ๋๋ค์ ํ์ด๋ฅผ ๋ณด์ํ๋, ๋ค๋ค ์๊ฐํ ์ฝ๋์ ์งํ๋ฐฉ์์ ๊ฐ๊ณ ๋ชจ๋ heap์ ์ฌ์ฉํด์ ํ์๋ค. ๋ด ์ฝ๋๊ฐ ๊ฒฐ์ฝ ์์ข์ ์ฝ๋๋ ์๋์๊ธฐ์ ๊ธฐ๋ถ์ด ์ข์๋ฐ!
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] 124๋๋ผ์ ์ซ์ (level.2) (0) | 2021.09.16 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํ/ํ - ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (level.2) (0) | 2021.09.15 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํ,ํ - ๊ธฐ๋ฅ๊ฐ๋ฐ (level.2) (0) | 2021.09.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ๋ ฌ - H-Index (level.2) (0) | 2021.09.09 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํด์ - ์์ฅ (level.2) (0) | 2021.09.09 |