알고리즘 문제 풀이/프로그래머스
[Algorithm] 프로그래머스 - 커피 심부름 (Kotlin)
참깨빵위에참깨빵
2024. 7. 4. 18:55
728x90
반응형
아메리카노, 카페라떼만 파는 카페에서 커피를 사려고 한다. 아메리카노, 카페라떼 가격은 아이스, 핫 상관없이 각각 4500, 5000원이다. 메뉴만 적은 팀원은 아이스로 통일하고 '아무거나'를 적은 팀원은 아이스 아메리카노로 통일한다. 각 직원이 적은 메뉴가 문자열 배열 order로 주어질 때 결제할 금액을 리턴하는 함수를 완성하라. order의 원소는 아래의 것들만 들어오고 각 의미는 다음과 같다
먼저 아메리카노, 카페라떼, anything을 모두 구분하면서 가격을 계산한다면 아래와 같이 풀 수 있다.
class Solution {
fun solution(order: Array<String>): Int {
var answer = 0
order.forEach { menu ->
when {
menu.contains("americano") -> answer += 4500
menu.contains("cafelatte") -> answer += 5000
menu == "anything" -> answer += 4500
}
}
return answer
}
}
하지만 map을 써서 아래와 같이 풀 수도 있다.
class Solution {
fun solution(order: Array<String>): Int = order.map {
if (it.contains("cafelatte")) 5000 else 4500
}.sum()
}
아이스, 핫 상관없이 아메리카노 4500원, 카페라떼 5000원에 팔고 있고, anything인 경우 차가운 아메리카노(4500원)로 통일한다는 조건이 있다.
때문에 카페라떼면 5000원으로 계산하고, 그 외의 경우는 전부 4500원을 더하도록 map 안에 조건을 적고 sum()으로 총액을 계산해서 리턴시키면 된다.
반응형