Search

๊ตฌ์—ฐ์ง€

2.๋ฌธ์ œ์ด๋ฆ„
3. ์ˆ˜ํ–‰์‹œ๊ฐ„[์ดˆ(s)]
2823
์ข‹์•„์š” ๋ˆ„๋ฅด๊ธฐ
์ข‹์•„์š” ์ˆ˜
: 0
5 more properties
| ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ
heapq๋ฅผ ์ด์šฉํ•œ ์ฝ”๋“œ
import heapq def solution(scoville, K): answer = 0 heapq.heapify(scoville) # ๋ฆฌ์ŠคํŠธ๋ฅผ heap์˜ ํ˜•์‹์œผ๋กœ ์ •๋ ฌํ•˜๊ฒŒ ํ•ด์คŒ # while๋ฌธ์„ ๊ฑธ์–ด์ค„ ๋•Œ ์ตœ์†Ÿ๊ฐ’์ด K๋ณด๋‹ค ์ž‘๋‹ค๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ์„œ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋ฏ€๋กœ # ์ œ์ผ ์ฒ˜์Œ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ๋Š” while๋ฌธ ๋ฐ–์—์„œ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ด์คŒ if(len(scoville) == 1): if(heapq.heappop(scoville) < K): return -1 else: return answer elif (len(scoville) == 0): return -1 else: min1 = heapq.heappop(scoville) min2 = heapq.heappop(scoville) level = min1 while level < K: #queue.put(min1 + 2*min2) heapq.heappush(scoville, min1 + 2*min2) answer += 1 if(len(scoville) >=2): min1 = heapq.heappop(scoville) min2 = heapq.heappop(scoville) level = min1 elif(len(scoville) == 1): if (heapq.heappop(scoville) < K): return -1 else: return answer # return์ด ์„ž๋Š” ํšŸ์ˆ˜์ด๋ฏ€๋กœ answer์— 1์„ ๋”ํ•ด์ฃผ์ง€ ์•Š์Œ else: return -1 # ๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ K ์ด์ƒ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ return ํ•ฉ๋‹ˆ๋‹ค. return answer
Python
๋ณต์‚ฌ
| ์ฝ”๋“œ ์„ค๋ช…ํ•˜๊ธฐ
(1) ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜์™€ ๋‘ ๋ฒˆ์งธ๋กœ ์ž‘์€ ์ˆ˜๋ฅผ ๊ณ„์† ๊ตฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค โ†’ ์ž๋™์œผ๋กœ ์ •๋ ฌ ๋˜๊ฒŒ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ best! โ†’ ์šฐ์„ ์ˆœ์œ„ ํ ์ด์šฉํ•˜๊ธฐ(heapq, PriorityQueue ๋ชจ๋“ˆ ์ด์šฉ)
(2) ์ƒˆ๋กœ ๊ณ„์‚ฐํ•œ ๊ฐ’์„ ๋ฆฌ์ŠคํŠธ์— ์ƒˆ๋กœ์šด ๊ฐ’์„ ๋„ฃ์„ ๋•Œ ์†๋„๊ฐ€ ๋งŽ์ด ๊ฑธ๋ฆฌ์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค
โ†’ ๋ฆฌ์ŠคํŠธ๋Š” ๊ฐ’์„ appendํ•  ๋•Œ๋งˆ๋‹ค ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ƒˆ๋กœ ์ƒ์„ฑ๋˜์–ด O(N)์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฏ€๋กœ ๊ฐ’์„ ๋„ฃ๊ณ  ํƒ์ƒ‰ํ•  ๋•Œ ์†๋„๊ฐ€ ๋” ๋น ๋ฅธ(O(logN)) ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•˜์ž
(3) K๋ณด๋‹ค ์ปค์งˆ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ -1์„ returnํ•˜๋Š” ์กฐ๊ฑด
(4) ์šฐ์„ ์ˆœ์œ„ ํ ๋‚ด๋ถ€์— ์žˆ๋Š” ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ 2๊ฐœ ๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ pop์„ ํ•  ์ˆ˜ ์—†์Œ โ†’ ์กฐ๊ฑด์— ๋”ฐ๋ผ -1 ๋˜๋Š” answer๋ฅผ returnํ•ด์•ผ ํ•จ
โ€ข
์›์†Œ ๊ฐœ์ˆ˜๊ฐ€ 2๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ answer ๋˜๋Š” -1์„ returnํ•˜๋Š” ์กฐ๊ฑด
if(len(scoville) == 1): if(heapq.heappop(scoville) < K): return -1 else: return answer elif (len(scoville) == 0): return -1 else: min1 = heapq.heappop(scoville) min2 = heapq.heappop(scoville) level = min1
Python
๋ณต์‚ฌ
โ€ข
while๋ฌธ์„ ๊ฑธ์–ด์ค„ ๋•Œ ์ตœ์†Ÿ๊ฐ’์ด K๋ณด๋‹ค ์ž‘๋‹ค๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ์„œ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋ฏ€๋กœ ์ œ์ผ ์ฒ˜์Œ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ๋Š” while๋ฌธ ๋ฐ–์—์„œ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ด์คŒ