import sys from math import ceil def input(): return sys.stdin.readline().rstrip() N,AC,AP,BC,BP = map(int,input().split()) if AP*BC < BP*AC: AC,AP,BC,BP = BC,BP,AC,AP answer = float('inf') for A_COUNT in range(BC): B_COUNT = ceil((N-A_COUNT*AC)/BC) isover = False if B_COUNT<0: B_COUNT = 0 isover = True answer = min(answer, A_COUNT*AP + B_COUNT*BP) if isover: break print(answer)
헷갈려서 어려웠던 문제
최소공배수를 이용해서 풀어야하는 문제이다.
가성비가 좋은 것을 B로 시작하는것을 두고
가성비가 안 좋은 것을 A라고 햇을시,
AB개만큼 구매를 한다고 했을시에는 무조건 B를 A개 사는것이 이득이다.
즉 이말은 A를 B개 미만으로 사는것이 장미를 최소한의 값으로 구매하는것임을 인지하고,
A묶음의 장미를 B번 사는 것 미만으로 샀을때
장미의 값을 계산을 해주면 되는 문제이다.
문제를 풀때 a,b가 헷갈려서 너무 어려웠던 문제였다. 조심해서 풀자.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 2695 공 (0) | 2022.06.21 |
---|---|
[BOJ/백준] 16890 창업 (0) | 2022.05.11 |
[BOJ/백준] 19566 수열의 구간 평균 (0) | 2022.01.15 |
[BOJ/백준] 12912 트리 수정 (0) | 2021.12.23 |
[BOJ/백준] 2240 자두나무 (0) | 2021.12.04 |