https://programmers.co.kr/learn/courses/30/lessons/42891#
์ฐ์ ์์ ํ ๋ฌธ์ ์ ๋๋ค.
์๋ฅผ ๋ค์ด foods_time์ด [3, 4, 5, 6, 7, 8, 9, 10] ์ด๋ผ๊ณ ํด๋ด ์๋ค.
์ด ์ ๋ณด๋ง ์ฃผ์ด์ก์ ๋ ๊ฐ์ฅ ์์ ๊ฐ
์ธ 3, ๊ทธ๋ฆฌ๊ณ ๋ฐฐ์ด์ ๊ธธ์ด
7 ์ด๋
21์ด ํ์๋ [1, 2, 3, 4, 5, 6, 7] ์ด ๋จ์ ์ ์ ์๊ฒ ์ฃ ?
์ฆ N์ด(๊ฐ์ฅ ์์ ๊ฐ x ๋ฐฐ์ด์ ๊ธธ์ด)ํ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ฅ ์์ ๊ฐ
, ๋ฐฐ์ด์ ๊ธธ์ด
๋ก ์ ์ ์๋ ๊ฒ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์์ ๊ฐ => ์ฐ์ ์์ ํ ์์ ์๊ณ ๋ฆฌ์ฆ์ ์กฐ๊ธ ํ์ด๋ณด์ ๋ถ๋ค์ ์ฝ๊ฒ ๋์น์ฑ์ จ๊ฒ ์ฃ ??
๊ฐ์ฅ ์์ ๊ฐ x ๋ฐฐ์ด์ ๊ธธ์ด๋ก ๊ณ์ ์ ํ๋ฅผ ํด์ค๋๋ค.
๊ทธ๋ฐ๋ฐ ์ด ๊ฐ์ด ์ด์ K์ด ํ๋ฅผ ๋์ด๊ฐ๋ ๊ฒฝ์ฐ ๋ฉ์ถฐ์ค๋๋ค.
๊ทธ ๋๋ถํฐ๋ ๋ชจ๋๋ฌ ์ฐ์ฐ
์ ํตํด ํ ๋ฒ์ ๊ฐ์ ์ฐพ์ ์ ์์ต๋๋ค!
import heapq
def solution(food_times, k):
if sum(food_times) <= k:
return -1
food_times = [ (i, idx+1) for idx, i in enumerate(food_times) ]
pq = []
for f, idx in food_times:
heapq.heappush(pq, (f, idx))
cnt = 0
prev = 0
while cnt + (pq[0][0] - prev) * len(pq) < k:
n = len(pq)
if not pq:
break
f, idx = heapq.heappop(pq)
cnt += n * (f - prev)
prev = f
q = []
for f, idx in food_times:
if f - prev > 0:
q.append((f - prev, idx))
return q[(k - cnt)%len(q)][1]
'Problem Solving ๐ฅ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค / 2018 KAKAO ์๋์์ฑ / ํ์ด์ฌ / ํธ๋ผ์ด (0) | 2021.05.03 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋งค์ถ ํ๋ฝ ์ต์ํ / ํ์ด์ฌ / DP (0) | 2021.05.02 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํจ์จ / Python (0) | 2021.04.07 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ๊ฒ์ / Python (0) | 2021.04.06 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฟ ํค ๊ตฌ์ / ํ์ด์ฌ (0) | 2021.02.22 |