~๋ชฉ์ฐจ~
๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/42891
๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ
- ๊ฐ์ฅ ์์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์์ ๋ถํฐ ์ฒ๋ฆฌํ๋ค. (heapq ์ฌ์ฉ)
- ๋ง์ฝ ๋ชจ๋ ์์์ ๊ฐ์ ๋ณด๋ค k๊ฐ ํฌ๋ค๋ฉด ๋ชจ๋ ์์์ ๋จน๊ณ ๋ ์๊ฐ์ด ๋จ๋ ๊ฒ์ด๋ฏ๋ก -1 ๋ฐํ
- ํ๋ฒ์ ๋กํ ์ด์ ์ ์ํด ํ์ํ ์์ ๊ฐ์๋, 0์ด ์๋ ์์์ ์์ด๋ค.(length)
- (๋ค์ ์ต์ ์์ ๊ฐ์) - (์ด์ ์ ์ฒ๋ฆฌํ ์์ ๊ฐ์) = ํ์ฌ ์ฒ๋ฆฌํด์ผํ ์์์ ์ต์ ๊ฐ์
- ๋ง์ฝ 'k - (์ต์ ์์ ๊ฐ์)*(๋กํ ์ด์ ) < 0' ์ด๋ผ๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๋ค.
- ๋จ์ ์์๋ค์ ์์๋ฅผ ์์ ํฌ๊ธฐ๊ฐ ์๋ ๋ฒํธ๋๋ก ๋ค์ ์ ๋ ฌ ํ
๋จ์ k๋ฒ์ ํ์์ ๋ํด์ ๋ช๋ฒ์ ๋กํ ์ด์ ์ ๋ ์ ์๋์ง(k % length) ๊ตฌํ์ฌ ์ต์ข ์์น๋ฅผ ์ฐพ๋๋ค.
์์ฑ ์ฝ๋
import heapq
def solution(food_times, k):
if sum(food_times) <= k:
return -1
length = len(food_times) # ํ ๋ฒ์ ๋กํ
์ด์
์ ์ํด ๋จ์ ์์ ๊ฐ์
previous = 0 # ์ด์ ์ฒ๋ฆฌ ์์
que = []
for i, time in enumerate(food_times): # (์๊ฐ, ๋ฒํธ) ํ ์ฝ์
heapq.heappush(que, (time, i + 1))
while k - (que[0][0] - previous) * length >= 0:
time, now = heapq.heappop(que) # ์ฒ๋ฆฌํ ๊ฐ์ฅ ์์ ์์
k -= (time - previous) * length
previous = time
length -= 1 # ํ ๋ฒ์ ๋กํ
์ด์
์ฒ๋ฆฌ
que.sort(key=lambda x: x[1]) # ์์ ๋ฒํธ๋ก ์ฌ์ ๋ ฌ
return que[k % length][1] # ๋จ์ ์์ ์์ ๋ํ ๋กํ
์ด์
ํ ์ต์ข
์์น
๋์์ด ๋์ จ๋ค๋ฉด ์ข์์ ๋๋ฌ์ฃผ์ธ์๐