문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
Taum은 Diksha의 생일을 축하하기 위해 계획하고 있다. Diksha가 Taum에게 원하는 선물은 두 가지이다. 하나는 블랙이고 다른 하나는 화이트이다. Taum은 Diksha를 행복하게 하기 위해 블랙 선물 b개와 화이트 선물 w개를 사야한다.
b = 3
w = 5
bc = 3
wc = 4
z = 1
블랙 선물을 3에 사서 화이트 선물로 1에 바꿀 수 있고, 화이트 선물의 가격은 4가 된다. 화이트 선물의 가격과 일치해서 블랙 선물을 사서 화이트 선물로 바꾸거나 단순히 블랙 선물과 화이트 선물을 구매할 수 있다. 전체 비용은 3 x 3 + 5 x 4 = 29가 된다.
taumBday 함수를 완성해라. 원하는 선물을 사기 위한 최소 비용을 반환해라.
taumBday 함수는 아래와 같은 매개변수를 가지고 있다.
선물의 최소 비용을 알아야 하기 때문에 각 색상의 반대 금액에 z를 더해서 비교하고 실제 구매비용을 구해야한다.
먼저 변수 rbc와 rwc를 선언하고 각각 bc와 wc를 할당한다.
// return type이 long이고,
// 비용이 int 범위를 벗어날 수 있고,
// 나중에 계산에 사용해야해서 미리 cast를 해준다.
long rbc = bc;
long rwc = wc;
그냥 샀을 때와 사고 교환했을 때 비용을 비교해서 최소 비용을 구한다.
if(bc > wc + z){
rbc = wc + z;
}
if(wc > bc + z){
rwc = bc + z;
}
각 선물의 개수와 최소 비용을 곱한 것을 더해서 반환한다.
return (long) b * rbc + (long) w * rwc;
public static long taumBday(int b, int w, int bc, int wc, int z) {
long rbc = bc;
long rwc = wc;
if(bc > wc + z){
rbc = wc + z;
}
if(wc > bc + z){
rwc = bc + z;
}
return (long) b * rbc + (long) w * rwc;
}