https://programmers.co.kr/learn/courses/30/lessons/42583
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ
ํธ๋ญ ์ฌ๋ฌ ๋๊ฐ ๊ฐ์ ๊ฐ๋ก์ง๋ฅด๋ ์ผ์ฐจ์ ๋ค๋ฆฌ๋ฅผ ์ ํด์ง ์์ผ๋ก ๊ฑด๋๋ ค ํฉ๋๋ค. ๋ชจ๋ ํธ๋ญ์ด ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ค๋ฉด ์ต์ ๋ช ์ด๊ฐ ๊ฑธ๋ฆฌ๋์ง ์์๋ด์ผ ํฉ๋๋ค. ๋ค๋ฆฌ์๋ ํธ๋ญ์ด ์ต๋ bridge_length๋ ์ฌ๋ผ๊ฐ
programmers.co.kr
class Truck :
def __init__(self, weight):
self.weight = weight
self.time =0
def solution(bridge_length, weight, truck_weights):
bridge = list()
result_queue = []
result_case_number = len(truck_weights)
seconds = 0
current_weight = 0
while True:
if bridge and bridge[0].time == bridge_length:
out_truck = bridge.pop(0)
result_queue.append( out_truck )
current_weight -= out_truck.weight
else :
pass
if truck_weights and current_weight+ truck_weights[0] <= weight:
enter_truck = Truck(truck_weights.pop(0))
bridge.append(enter_truck)
current_weight += enter_truck.weight
else :
pass
for truck_bridge in bridge :
truck_bridge.time += 1
seconds += 1
if len(result_queue) == result_case_number :
break
return seconds
๋ค๋ฆฌ์ ์ฌ๋ผ์ ์๋ ํธ๋ญ์ bridge ๋ฆฌ์คํธ์ ์ฌ๋ ค, ์งํ์ํ์ ๋ฌด๊ฒ๋ฅผ ๊ธฐ๋กํ๊ธฐ ์ํ ํด๋์ค ๋ง๋ค์๊ณ , ๋๊ธฐํ๋ ํธ๋ญ์ ํ๋ฅผ ์ด์ฉํด ํ๋์ฉ ๋นผ๊ฐ๋ฉด์ ์งํ์์ผฐ๋ค
https://programmers.co.kr/learn/courses/30/lessons/42584
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ฃผ์๊ฐ๊ฒฉ
์ด ๋จ์๋ก ๊ธฐ๋ก๋ ์ฃผ์๊ฐ๊ฒฉ์ด ๋ด๊ธด ๋ฐฐ์ด prices๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ๊ฒฉ์ด ๋จ์ด์ง์ง ์์ ๊ธฐ๊ฐ์ ๋ช ์ด์ธ์ง๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์. ์ ํ์ฌํญ prices์ ๊ฐ ๊ฐ๊ฒฉ์ 1 ์ด์ 10,00
programmers.co.kr
def solution(prices):
answer = [0] * len(prices)
days= 0
prices_history = list()
for current_price in prices :
while True :
if prices_history and prices_history[-1][1] > current_price:
out = prices_history.pop(-1)
answer[out[0]] = days - out[0]
else :
prices_history.append([days , current_price])
break
days +=1
days -=1
for result in prices_history :
answer[result[0]] = days - result[0]
return answer
์ ์ฒด ์ฃผ์ ๊ฐ๊ฒฉ ๋ฐฐ์ด์ For ๋ฌธ์ ๋๋ฆฌ๋ฉด์, ์คํ์ ํ์ฌ ๊ฐ๊ฒฉ์ ๋ฃ๊ธฐ์ ์ ์คํ์ ์๋ ๊ฐ์ด ์ค๋๋ณด๋ค ๋ฎ์ผ๋ฉด pop ์ํค๋ฉฐ ์งํ ์์ผฐ๊ณ ,
๋นผ๋ธ ์ฃผ์ ๊ฐ๊ฒฉ๋ค์ ๋ ์ง ๊ฐ์ ๋น๊ตํ์ฌ answer ๋ฐฐ์ด์ ๋ฃ์๊ณ ,
while๋ฌธ์ด ๋๋๊ณ ๋ ๋จ์ ๊ฐ์ days ๊ณ์ฐํ์ฌ answer์ ๋ฃ์๋ค.
์ต๋ํ for๋ฌธ ํ ๋ฒ์ ์คํ, ์กฐ๊ฑด, ๋น๊ต ๊น์ง ๋ฃ์ด์ ์งํํ๊ณ ์ ํ์๋ค.
https://programmers.co.kr/learn/courses/30/lessons/42626
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋ ๋งต๊ฒ
๋งค์ด ๊ฒ์ ์ข์ํ๋ Leo๋ ๋ชจ๋ ์์์ ์ค์ฝ๋น ์ง์๋ฅผ K ์ด์์ผ๋ก ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ๋ชจ๋ ์์์ ์ค์ฝ๋น ์ง์๋ฅผ K ์ด์์ผ๋ก ๋ง๋ค๊ธฐ ์ํด Leo๋ ์ค์ฝ๋น ์ง์๊ฐ ๊ฐ์ฅ ๋ฎ์ ๋ ๊ฐ์ ์์์ ์๋์ ๊ฐ
programmers.co.kr
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville)
while len(scoville) > 1 :
min_1 = heapq.heappop(scoville)
if min_1 >= K :
return answer
else :
min_2 = heapq.heappop(scoville)
heapq.heappush(scoville, min_1+min_2*2)
answer += 1
if heapq.heappop(scoville) >= K :
return answer
else :
return -1
heap์ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ํด๊ฒฐ ํ ์ ์์๋ค.
์ค์ฝ๋น ์ง์๋ฅผ python heapq ๋ชจ๋์ ํ์ฉํ์ฌ ๊ตฌํ ํ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก heapq ๋ ์ต์ heap์ผ๋ก ๊ตฌํํด์ฃผ๋ฉฐ
heapify(), heapq.heappush(), heapq.heappop() 3๊ฐ์ง๋ฅผ ์ ์ฐ๋ฉด ์ฝํ ๋ฌธ์ ํ๊ธฐ์ ์ข์ ๊ฑฐ ๊ฐ๋ค
https://programmers.co.kr/learn/courses/30/lessons/42627
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋์คํฌ ์ปจํธ๋กค๋ฌ
ํ๋๋์คํฌ๋ ํ ๋ฒ์ ํ๋์ ์์ ๋ง ์ํํ ์ ์์ต๋๋ค. ๋์คํฌ ์ปจํธ๋กค๋ฌ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ์์ฒญ์ด ๋ค์ด์จ ์์๋๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ
programmers.co.kr
import heapq
def solution(jobs):
jobs = sorted(jobs, key=lambda x: (x[0], x[1]))
number = len(jobs)
time = 0
process_time = 0
ready_queue = list()
is_process = False
answer = 0
while jobs or ready_queue :
while jobs and time == jobs[0][0]:
ready_queue.append(jobs.pop(0)[1])
ready_queue.sort()
if process_time <= 0 :
is_process = False
else :
is_process = True
if is_process :
pass
elif ready_queue :
process_time = ready_queue.pop(0)
answer += process_time
answer += len(ready_queue)
time += 1
process_time -=1
return int(answer/number)
์๊ฐ๋ณต์ก๋ ํ ์คํธ๊ฐ ์ค์ํ ๋ฌธ์ ์๋ค.
๋ ๊ฐ์ง ๋ฌธ์ ๋ก ์ค๋ ๊ฑธ๋ ท๋๋ฐ
์ฒซ ๋ฒ์งธ๋ ๊ฐ์ ์๊ฐ์ ์ค๋ณต๋์ ์ฌ ๊ฒ์ ์๊ฐํ์ง ๋ชปํ๋ค.'
๋ ๋ฒ์จฐ๋ ๋น์ฐํ' ์๊ฐ์์๋๋ก ์ฌ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ณ
์ฒซ ๋ฒ์งธ ๋ฌธ์ ๋ ๋น ๋ฅด๊ฒ ์ธ์งํ์ฌ ์ฝ๋๋ฅผ ๊ณ ์ณค์ง๋ง, ๋ ๋ฒ์งธ ๋ฌธ์ ๋ฅผ ์๊ฐํ์ง ๋ชปํด์ ์ฝ๋๋ฅผ ์ด๋ฆฌ์ ๋ฆฌ ๋ฐ๊พธ๋ค ๋ณด๋
๊ฒฐ๋ก ์ ์ผ๋ก๋ ํ๋ก ํด๊ฒฐํ์ง๋ง, ๋์ค์ ํ์ผ๋ก ๊ตฌํํ๋ฉด ๋ณด๋ค ์ฝ๋๋ ์งง๊ณ , ์๊ฐํจ์จ์ฑ๋ ์ข๊ฒ ํ ์ ์์ ๊ฑฐ ๊ฐ๋ค.
'๐ป CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํํ ๊ฐ๋ฅํ ์ด์งํธ๋ฆฌ (0) | 2023.01.31 |
---|---|
์ธ์ฌ๊ณ ๊ณผ (0) | 2023.01.30 |
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 1 ๋ค ํ๊ณ (0) | 2022.08.11 |
2022-08-08 ํ๋ก๊ทธ๋๋จธ์ค ์ธ์ฆ 100๋ฌธ์ ๋ฌ์ฑ (0) | 2022.08.08 |
ํ๋ก๊ทธ๋๋จธ์ค - ์ด์ค์์ํ,k ๋ฒ์งธ ์ (0) | 2022.01.21 |