풀엇다
public class IceCoffee {
/**
* 추운날에도 아이스 아메리카노만 마시는 이상한놈
* 아이스 아메리카노는 한잔에 5,500원
* 가진 돈 money가 매개변수로 주어질 때,
* 최대로 마실 수 있는 아메리카노의 잔 수와 남은 돈을 순서대로 담은 배열을 return하기
*/
public int[] solution(int money) {
int[] answer = new int[2]; // {아메리카노의 잔 수, 남은 돈}
int coffee = 5500;
int count = money / coffee;
int price = coffee * count;
if(count == 0) {
answer[0] = count;
answer[1] = money;
} else if(count >= 1) {
answer[0] = count;
answer[1] = money - price;
}
return answer;
}
}
한줄컷
class Solution {
public int[] solution(int money) {
return new int[] { money / 5500, money % 5500 };
}
}
money / 5500은 아메리카노의 잔 수
money % 5500은 남은 돈
* money % 5500에서, money < 5500이라면 어떻게 되는가?
money < 5500이면 money가 그대로 나온다
왜?
나머지 연산, %의 정의는
a % b = a - (b * a와 b의 몫)
여기서 중요한건, 몫 = a / b임
따라서, 5000 / 5500은 0이다
그럼 5000 % 5500 = 5000 - (b * 0) = 5000
따라서 5000 % 5500 = 5000이 되고
a % b = a (a < b)이 된다
- > 나누는 수보다 작으면 나머지는 자기 자신이 나옴