[Programmers] 라면곡μž₯

Updated:

라면곡μž₯

라면곡μž₯ 을 ν΄λ¦­ν•˜λ©΄ λ°”λ‘œ μ΄λ™ν•œλ‹€.

μ²˜μŒμ— νž™μ„ μ‚¬μš©ν•˜μ§€ μ•Šκ³  풀어보렀닀가 κ³ μƒλ§Œ μ—„μ²­ ν–ˆλ‹€.. 이 λ¬Έμ œλŠ” 일단 문제λ₯Ό μ΄ν•΄ν•˜λŠ”κ²Œ μ€‘μš”ν–ˆλ‹€ !

μš°μ„  문제λ₯Ό μ‰½κ²Œ μ ‘κ·Όν•˜λ €λ©΄ 밀가루λ₯Ό λ³΄μœ λŸ‰μ„ 버틸 수 μžˆλŠ” λ‚ λ‘œ λ°”κΎΈμ–΄ μƒκ°ν•˜λ©΄ 이해가 쑰금 더 잘 κ°„λ‹€.

괜히 λ°€κ°€λ£¨λŸ‰ μ΄λž‘ 버틸 수 μžˆλŠ” λ‚ μ΄λž‘ λ”°λ‘œ μƒκ°ν•˜λ‹€λ³΄λ‹ˆ μ—„μ²­ ν—·κ°ˆλ Έλ‹€.

밀가루 λ³΄μœ λŸ‰μ΄ k 보닀 μž‘μ€ 경우 계산을 톡해 밀가루λ₯Ό 보급받아야 ν•œλ‹€.

ν•˜μ§€λ§Œ μ΅œμ†Œν•œμ˜ λ³΄κΈ‰μœΌλ‘œ 버텨야 ν•˜κΈ° λ•Œλ¬Έμ— 보급 받을 수 μžˆλŠ” λ‚ μ§œμ—μ„œ μ΅œλŒ€λŸ‰μ„ 보급 λ°›μ•„μ•Ό ν•œλ‹€.


k 일 κΉŒμ§€ λ³΄μœ ν•œ λ°€κ°€λ£¨λ‘œ 버틸 수 없을 λ•Œ

ν˜„μž¬ λ³΄μœ ν•œ 밀가루 보닀 μž‘κ±°λ‚˜ 같은 λ‚ μ§œμ— 받을 수 μžˆλŠ” λͺ¨λ“  λ‚ μ§œ 별 보급 λ°€κ°€λ£¨λŸ‰μ„ νž™μ— λ„£μ–΄ μ€€ λ’€ μ΅œλŒ“κ°’μ„ κ°€μ Έμ˜¨λ‹€.

λ³΄μœ ν•œ 밀가루가 4 라면 λŠ¦μ–΄λ„ 4일 λ’€μ—λŠ” 보급을 λ°›μ•„μ•Ό λ‹€μ‹œ 운영이 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

import heapq as hq


def solution(stock, dates, supplies, k):
	answer = 0
	start = 0
	max_supply = []
	flour_sum = stock

	while flour_sum < k:  # 밀가루가 k개 미만인 경우 λ³΄κΈ‰λ°›λŠ”λ‹€.
		for idx in range(start, len(dates)):
			if dates[idx] <= flour_sum:  # 보급 받을 수 μžˆλŠ” λ‚  κΉŒμ§€ λ³΄κΈ‰λŸ‰μ„ μ΅œλŒ€νž™μ— λ„£μ–΄μ€€λ‹€.
				hq.heappush(max_supply, -supplies[idx])

			else:  # 보급 받을 수 μžˆλŠ” λ‚  보닀 λ¨Όμ € 받을 수 μ—†μœΌλ‹ˆ μ’…λ£Œ
				break

		start = idx  # 이미 νž™μ— λ„£μ–΄μ€€ κ³΅κΈ‰λŸ‰μ„ μ€‘λ³΅ν•΄μ„œ 넣지 μ•Šλ„λ‘ start λ₯Ό μˆ˜μ •ν•΄μ€€λ‹€.
		flour_sum += -hq.heappop(max_supply)
		answer += 1

	return answer

νŒŒμ΄μ¬μ—μ„œλŠ” μ΅œμ†Œνž™ 밖에 μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— μ΅œλŒ€νž™μ€ μ΅œμ†Œνž™μ„ μ‘μš©ν•˜λ©΄ λœλ‹€.

νž™μ— λ„£μ–΄μ£ΌλŠ” 값을 λͺ¨λ‘ 음수둜 λ°”κΎΈμ–΄ λ„£λŠ”λ‹€λ©΄ κ°€μž₯ 큰 값이 κ°€μž₯ μž‘μ€ κ°’μœΌλ‘œ λ°”λ€Œμ–΄ λ“€μ–΄κ°„λ‹€.

λ‚˜μ€‘μ— 값을 μ‚¬μš©ν•˜λŠ” κ²½μš°μ— - λ₯Ό λΆ™μ—¬μ£Όλ©΄ λœλ‹€.


Categories:

Updated:

Leave a comment