본문 바로가기

컴퓨터/BOJ

[BOJ](Phython) 15474번 : 鉛筆 / 정수 올림하는 방법

www.acmicpc.net/problem/15474

 

15474번: 鉛筆

JOI 君は10本の鉛筆を入手したい.セット X は3本で100円,セット Y は5本で180円である.この時,セット X を選んだ場合は,セットを4つ購入する必要があり400円必要である.セット Y を��

www.acmicpc.net

N개의 연필을 사려고 할 때, X세트는 A개에 B엔, Y세트는 C개에 D엔이다. 단, X세트를 사게되면 Y세트를 살 수없고, Y세트를 사게되면 X세트는 구매할 수 없다.

이때 ,JOI군이 N자루 이상 연필을 사려고할 때 필요한 금액의 최소치를 구하는 문제이다.

 

소스코드는 다음과 같다.

import math
n,a,b,c,d = map(int, input().split())
print(min(math.ceil(n/a)*b, math.ceil(n/c)*d))

만약 n를 a로 나누었을 경우 n/a개의 세트를 세트당 b엔으로 구입하면된다.

하지만 n를 a로 나누어지지 않을 경우 한 개의 세트를 더 구입해야 한다. 나눠지지 않는다는 것은 n/a 했을 때 소수점이 발생하므로 math.ceil(n/a)를 이용한다.

 

math.ceil(3.1) = 4, math.ceil(3.0) = 3 이므로 나누어지지 않을 때 한 개의 세트를 더 구입하는 상황을 처리할 수 있다.

 

마지막으로 x세트를 구입했을 때와 y세트를 구입했을 때를 비교하여 그 최솟값을 출력한다.