231221 JAVA Test01 (programmers-콜라문제)

2023. 12. 21. 09:462023.11.21-2024.05.31

 

콜라문제

package test;

 

//콜라문제

public class Test01 {

public static void main(String[] args) {

int a =2;

int b =1;

int n =20;

 

int result = solution(a,b,n);

System.out.println(result);

}

 

static int solution(int a, int b, int n) {

int answer = 0;

 

if(n>=a){

answer +=n/a;

int bottles=n%a+answer;

 

while (bottles>=a){

int newCola=bottles/a;

answer+=newCola;

bottles=(bottles%a)+newCola*b;

}

}

return answer;

}

}

 

 

  1. 먼저, 주어진 빈 병의 수 n이 콜라를 받기 위한 최소한의 빈 병의 개수 a보다 작으면 아무런 계산 없이 0을 반환합니다.
  2. 그렇지 않으면, 일단 최초로 받는 콜라의 병 수를 계산합니다. 이는 n / a로 구할 수 있습니다. 최초로 받은 콜라를 마신 후 남은 빈 병의 수는 n % a입니다.
  3. 남은 빈 병의 수를 기준으로 추가적으로 받을 수 있는 콜라의 수를 계속해서 계산합니다. 빈 병 a개당 받을 수 있는 콜라의 수는 b입니다. 따라서 남은 빈 병의 수를 a로 나눈 몫이 새롭게 받을 수 있는 콜라의 병 수입니다.
  4. 그 후, 남은 빈 병의 수를 업데이트하고, 이를 반복하여 더 이상 받을 수 없을 때까지 계산합니다.
  5. 최종적으로 받은 모든 콜라의 병 수를 더하여 반환합니다.

위의 코드에서는 이러한 접근을 기반으로 작성되었습니다. 주어진 예시에서는 정답이 19로 예상되는데, 코드를 통해 확인할 수 있습니다.

이런 유형의 문제를 풀 때, 규칙을 찾고 그에 따라 코드를 작성하는 것이 중요합니다. 코드에서 어떤 변수가 어떤 역할을 하는지 주의깊게 살펴보면서 이해하시면 좋을 것입니다.

'2023.11.21-2024.05.31' 카테고리의 다른 글

231221 JAVA Wrapper02(래퍼클래스)  (0) 2023.12.21
231221 JAVA WrapperEx(래퍼클래스)  (1) 2023.12.21
231220 JAVA Test01 (programmers)  (1) 2023.12.21
231220 JAVA enum(열거형 타입)  (0) 2023.12.21
231220 JAVA IsAHasA  (1) 2023.12.21