[백준] 6236 용돈 관리
📌문제 링크
💡 문제 풀이
첨에 문제 읽고 이게 뭔소리야... 싶었는데
그냥 2343 기타 레슨 문제랑 비슷한 문제인 것 같다
돈이 모자라면 다시넣고 어쩌구 더 남더라도 M번을 맞추기 위해 어쩌구
기타 레슨 문제로 생각하면 걍 강의를 순서대로 녹화해야 하고 (날짜 순서대로 돈을 씀) 블루레이 개수에 맞추는 (M번 인출 횟수를 맞추는) 거라고 생각하니까 이해가 됐다
📋코드
입력받는 부분 빼고 2343 기타 레슨 문제와 코드 똑같이 썼더니 맞았다 ㅎㅎ
# 6236 용돈 관리
n, m = map(int, input().split())
arr = list()
for i in range(n):
arr.append(int(input()))
def binary_search(start, end):
result = 0
while start <= end:
mid = (start + end) // 2 # 인출할 돈 단위 k
total = mid # 인출한 돈
cnt = m # 인출 횟수
# 날짜 순서대로 용돈 사용
for x in arr:
# 돈 액수만큼 차감시킴
if total >= x:
total -= x
# 돈이 모자랄 경우
else:
total = mid
cnt -= 1
# 인출 횟수가 m번을 넘어가거나 하루에 쓸 돈이 k보다 클 경우
if cnt <= 0 or x > mid:
cnt = -1
break
else:
total -= x
# 쓸 돈보다 인출할 돈이 작을 경우
if cnt <= 0:
start = mid + 1
else:
result = mid
end = mid - 1
return result
print(binary_search(1, sum(arr)))
Author And Source
이 문제에 관하여([백준] 6236 용돈 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@saessak/백준-6236-용돈-관리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)