231221 JAVA Test01 (programmers-콜라문제)
2023. 12. 21. 09:46ㆍ2023.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;
}
}
- 먼저, 주어진 빈 병의 수 n이 콜라를 받기 위한 최소한의 빈 병의 개수 a보다 작으면 아무런 계산 없이 0을 반환합니다.
- 그렇지 않으면, 일단 최초로 받는 콜라의 병 수를 계산합니다. 이는 n / a로 구할 수 있습니다. 최초로 받은 콜라를 마신 후 남은 빈 병의 수는 n % a입니다.
- 남은 빈 병의 수를 기준으로 추가적으로 받을 수 있는 콜라의 수를 계속해서 계산합니다. 빈 병 a개당 받을 수 있는 콜라의 수는 b입니다. 따라서 남은 빈 병의 수를 a로 나눈 몫이 새롭게 받을 수 있는 콜라의 병 수입니다.
- 그 후, 남은 빈 병의 수를 업데이트하고, 이를 반복하여 더 이상 받을 수 없을 때까지 계산합니다.
- 최종적으로 받은 모든 콜라의 병 수를 더하여 반환합니다.
위의 코드에서는 이러한 접근을 기반으로 작성되었습니다. 주어진 예시에서는 정답이 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 |