프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 커피 심부름(Java)

Sigfriede 2023. 5. 13. 01:10

  문제 설명

  팀의 막내인 철수는 아메리카노와 카페 라테만 판매하는 카페에서 팀원들의 커피를 사려고 합니다. 아메리카노와 카페 라테의 가격은 차가운 것과 뜨거운 것 상관없이 각각 4500, 5000원입니다. 각 팀원에게 마실 메뉴를 적어달라고 하였고, 그 중에서 메뉴만 적은 팀원의 것은 차가운 것으로 통일하고 "아무거나"를 적은 팀원의 것은 차가운 아메리카노로 통일하기로 하였습니다.

  각 직원이 적은 메뉴가 문자열 배열 order로 주어질 때, 카페에서 결제하게 될 금액을 return 하는 solution 함수를 작성해주세요. order의 원소는 아래의 것들만 들어오고, 각각의 의미는 다음과 같습니다.

order의 원소 의미
"iceamericano", "americanoice" 차가운 아메리카노
"hotamericano", "americanohot" 따뜻한 아메리카노
"icecafelatte", "cafelatteice" 차가운 카페 라테
"hotcafelatte, cafelattehot" 따뜻한 카페 라테
"americano" 아메리카노
"cafelatte" 카페 라테
"anything" 아무거나

 

  제한사항

  • 1 <= order의 길이 <= 1,000

 

  입출력 예

order result
["cafelatte", "americanoice", "hotcafelatte", "anything"] 19000
["americanoice", "americano", "iceamericano"] 13500
class Solution {
    public int solution(String[] order) {
        int answer = 0;
        for (int i = 0; i < order.length; i++) {
            if (order[i].contains("americano") || order[i].contains("anything")) {
                answer += 4500;
            } else {
                answer += 5000;
            }
        }
        return answer;
    }
}

  for문이 order의 길이만큼 순회합니다. contains 메소드를 이용하여 order의 i번째 원소에 문자열 americano를 포함하는지 확인합니다. 또는 order의 i번째 원소에 문자열 anything을 포함하는지 확인합니다. 만약 포함한다면 answer에 4500을 더하기 할당합니다. 아메리카노는 4500원이고, 아무거나 역시 차가운 아메리카노로 통일하기로 했기 때문입니다.

  앞선 조건에 해당하지 않으면 answer에 5000을 더하기 할당합니다. 문제의 조건에서는 아메리카노 혹은 라떼만 결제하기 때문입니다. 따라서 별도의 명시적인 조건을 작성하지 않았습니다. 조건에 맞추어 answer에 값이 더해집니다.