Algorithm/기타(기업등)

[CodingBat/java] makeChocolate

IagreeBUT 2021. 10. 7. 03:22
728x90

구분

  • Logic2

 

링크

https://codingbat.com/prob/p191363

 

CodingBat Java Logic-2 makeChocolate

We want make a package of goal kilos of chocolate. We have small bars (1 kilo each) and big bars (5 kilos each). Return the number of small bars to use, assuming we always use big bars before small bars. Return -1 if it can't be done.makeChocolate(4, 1, 9)

codingbat.com

 

 

문제

 

풀이

1. 5kilo 짜리 big 초콜렛 바를 몇개나 쓸 것인가? 

  • goal/5 를 이용해, goal이 필요한 최대 5kilo짜리 초콜렛 바의 갯수(bigNum)를 구한다
    • if ) 가진 갯수보다 크면,  가진걸 전부 사용
    • else ) 작으면, 필요한 만큼만 사용 

2. 1kilo 짜리 small 초콜렛 바를 몇개나 쓸 것인가?

  • 큰 초콜렛 바를 사용하고 남은 kilo를 구한다 (goal - bigNum*5)
    • 0보다 작은경우, 답을 구할수 없음
    • 0보다 큰경우
      • small을 전부 사용해도 kilo가 남아있으면, 답을 구할 수 없음
      • 아니면, 남은 것이 답

 

 

코드

public int makeChocolate(int small, int big, int goal) {
   
   
   int bigNum = goal/5;
   if(bigNum > big) bigNum = big;
   
   int r = goal - bigNum*5; 
  
   if( r<0 ) return -1;
   else if(r-small>0) return -1;
   else return r;

}

 

 

 

728x90