Skip to main content

64. [Java] 커피 심부름

https://school.programmers.co.kr/learn/courses/30/lessons/181837

image.png

image.png


정답코드

class Solution {
    public int solution(String[] order) {
        int total = 0;
        
        for (String menu : order) {
            if (menu.equals("cafelatte") || menu.contains("cafelatte")) {
                total += 5000;
            } else {
                // americano 또는 anything
                total += 4500;
            }
        }
        
        return total;
    }
}
  • 중요한 건 온도 상관 없음
  • "anything"은 "americano" 취급 → 4500원
  • "americanoice", "hotamericano" 등은 "americano"가 포함됨 → 4500원
  • "cafelatte" 또는 "icecafelatte" 등은 "cafelatte" 포함됨 → 5000원

온도가 상관 없는 문제이다. 왜냐하면 아이스로 시키든 핫으로 시키든 가격 차이가 없기 때문이다. 카페라떼만 5000원이므로 조건문 앞쪽으로 빼고, anything 이랑 americano는 4500원으로 같기 때문에 else로 일괄처리한다.

처음에는 문제를 이해하기 어려웠다. anything이 들어있으면 팀원의 주문을 모두 아메리카노로 통일한다고 하는 것으로 이해했는데 그것이 아니었다. anything으로 주문한 사람만 독립적으로 아메리카노로 계산한다. '통일'한다는 말 때문에 팀원의 커피를 모두 아메리카노로 통일한다고 이해했는데 그게 아니었다. 그래서 로직은 생각보다 간단하다. anything이 배열에 있더라도 anything만 차가운 아메리카노로 계산해서 4500원이고, 카페라떼와 아메리카노를 주문한 팀원들은 각각 해당하는 가격에 맞게 계산한다.


image.png