문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
안나와 브라이언은 저녁 식사 금액을 어떻게 나눌지 고민하고 있다. 자기가 먹은 것만 계산할 것이다. 브라이언은 영수증을 받고 안나의 금액을 계산한다. 너는 그의 계산이 맞는지 확인해야 한다.
예를 들면 bill = [2, 4, 6]의 영수증을 받았다. 안나는 가격이 6인 음식을 먹는 것을 거부했다. 브라이언이 맞게 계산했다면, 안나는 (2 + 4) / 2 = 3을 지불한다. 그가 bill[2]의 금액을 포함시켰다면, (2 + 4 + 6) / 2 = 6으로 계산할 것이다. 두 번째 경우, 그는 안나에게 3을 돌려줘야 한다.
bonAppetit 함수를 작성해라. 금액이 정확히 나눠지면 "Bon Appetit"를 출력해야 한다.
bonAppetit 함수는 아래와 같은 매개변수를 가지고 있다.
브라이언이 안나에게 초과된 금액을 지불하지 않는 경우, "Bon Appetit"을 출력한다. 그렇지 않으면 브라이언이 안나에게 돌려줘야 할 금액을 출력한다. 이때 금액은 항상 정수이다.
먼저 계산할 금액을 할당할 변수를 선언한다. 문제에서 actual을 사용하여 변수명으로 하였고, 항목의 최대값으로 모두 합해도 Integer 범위 내라서 int로 선언했다.
int actual = 0;
반복문을 통해 합을 구한다. 이때 index k는 안나가 먹지 않은 음식이므로 제외 한다.
for(int i = 0; i < bill.size(); i++){
if(i == k){
continue;
}else{
actual += bill.get(i);
}
}
합을 구했다면 안나의 지불 금액을 구하기 위해 2로 나누고, actual에 할당한다.
actual /= 2;
마지막으로 b와 actual을 비교한다. 같다면 "Bon Appetit"를 출력하고, 그렇지 않다면 안나에게 돌려줘야할 금액을 출력한다.
if(actual == b){
System.out.println("Bon Appetit");
}else{
System.out.println(b - actual);
}
public static void bonAppetit(List<Integer> bill, int k, int b) {
int actual = 0;
for(int i = 0; i < bill.size(); i++){
if(i == k){
continue;
}else{
actual += bill.get(i);
}
}
actual /= 2;
if(actual == b){
System.out.println("Bon Appetit");
}else{
System.out.println(b - actual);
}
}