니노니나니

[백준/27952번] 보디빌딩 - S4/Python 본문

알고리즘/백준

[백준/27952번] 보디빌딩 - S4/Python

SangJunni 2024. 7. 25. 22:44

https://www.acmicpc.net/problem/27952

문제

건표는 헬스를 좋아하는 사람이다. 건표는 자신만의 운동 루틴이 있다. 건표는 이 루틴을 진행할 때마다 몸무게가  kg만큼 빠졌다. 건표는 하루에 몇 번이고 이 루틴을 진행할 수 있었다.

건표는 장차 있을 보디빌딩 대회를 위해 일에 걸쳐 식단을 짜놓았다. 이 계획에 의하면 번째 날에는 건표의 몸무게가  kg만큼 찐다. 다만, 건표가 운동을 하다가 쓰러지면 안 되기 때문에 번째 날에 최종 몸무게가 최소  kg 이상이 되길 원했다. 만약 건표가 너무 많이 운동을 하거나 너무 적게 음식을 먹어서 그날에 최종적으로  kg보다 적은 몸무게를 가진다면, 건표는 그 자리에서 쓰러진다. 건표는 보디빌딩 대회에서 우승하기 위해 루틴을 최대한 많이 진행하여 최대한 건강한 몸을 만들고 싶었다. 건표가 쓰러지지 않는 선에서 이 루틴을 최대 몇 번까지 진행할 수 있는지 구하여라.

입력

첫째 줄에는 두 정수 가 주어진다. 은 보디빌딩 대회까지 남은 일수. 는 루틴을 진행할 때마다 빠지는 몸무게(kg)이다.

둘째 줄에는 개의 정수 가 주어진다. 번째 정수 번째 날 최종 몸무게의 하한을 의미한다.

셋째 줄에는 개의 정수 가 주어진다. 번째 정수 번째 날에 늘어나는 몸무게를 나타낸다.

풀이

n,x = map(int, input().split())
min_weights = list(map(int, input().split()))
gain_weights = list(map(int, input().split()))
weight = 0
for idx, g in enumerate(gain_weights):
    weight += g
    if weight < min_weights[idx]:
        print(-1)
        exit()
print((weight - min_weights[-1])//x)

해결방법

운동 루틴을 매일 할 필요 없이 매일 살찌는 과정만 진행하면서 최소 몸무게를 넘어가는지 검사 한 다음 문제가 없으면 마지막 날의 최소 몸무게를 제외한 후 가능한 운동 횟수를 출력하면 되는 문제.