본문 바로가기

코딩테스트

아이스 아메리카노

풀엇다

 

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)이 된다

- > 나누는 수보다 작으면 나머지는 자기 자신이 나옴

 

 

'코딩테스트' 카테고리의 다른 글

배열 뒤집기  (0) 2026.04.12
나이 출력  (0) 2026.04.10
옷가게 할인 받기  (0) 2026.04.07
배열의 평균값  (0) 2026.04.07
피자 나눠먹기 3  (0) 2026.04.02