커피 신부름
문제 설명
팀의 막내인 철수는 아메리카노와 카페 라테만 판매하는 카페에서 팀원들의 커피를 사려고 합니다. 아메리카노와 카페 라테의 가격은 차가운 것과 뜨거운 것 상관없이 각각 4500, 5000원입니다. 각 팀원에게 마실 메뉴를 적어달라고 하였고, 그중에서 메뉴만 적은 팀원의 것은 차가운 것으로 통일하고 "아무거나"를 적은 팀원의 것은 차가운 아메리카노로 통일하기로 하였습니다.
각 직원이 적은 메뉴가 문자열 배열 order로 주어질 때, 카페에서 결제하게 될 금액을 return 하는 solution 함수를 작성해주세요. order의 원소는 아래의 것들만 들어오고, 각각의 의미는 다음과 같습니다.
입출력 예
order | result |
["cafelatte", "americanoice", "hotcafelatte", "anything"] | 19000 |
["americanoice", "americano", "iceamericano"] | 13500 |
입출력 예 #1
- 예제 1번의 입력을 표로 나타내면 다음과 같습니다.
order[i] | 팀원의 적음 음료 | 실제 주문 음료 |
"cafelatte" | 카페 라테 | 차가운 카페 라테 |
"americanoice" | 차가운 아메리카노 | 차가운 아메리카노 |
"hotcafelatte" | 따뜻한 카페 라테 | 따뜻한 카페 라테 |
"anything" | 아무거나 | 차가운 아메리카노 |
- 철수는 차가운 아메리카노 2잔, 차가운 카페 라테 1잔, 따뜻한 카페 라테 1잔을 주문하게 되므로 결제 금액은 4500 × 2 + 5000 × 2 = 19000원입니다. 따라서 19000을 return 합니다.
입출력 예 #2
- 예제 2번의 입력에서는 모든 음료를 차가운 아메리카노로 시키게 됩니다. 따라서 결제 금액은 4500 × 3 = 13500원이고 13500을 return 합니다.
나의 풀이
function solution(order) {
let price = 0;
order.forEach((drink) => {
if (drink.includes("americano") || drink === "anything") price += 4500;
if (drink.includes("latte")) price += 5000;
})
return price;
}
`forEach()`문을 사용해서 경우에 따라 price에 가격을 더해줬다.
다른 사람의 풀이
const solution = (order) => order.reduce((acc, cur) => acc + (cur.includes('latte') ? 5000 : 4500), 0)
라테인 경우를 제외하고는 모두 4500원이라는 점을 이용한 풀이! 그리고 생각해 보니 `reduce()`를 쓰기에도 알맞은 문제였던 거 같다.
'알고리즘 > Programmers' 카테고리의 다른 글
[TIL] 2023.08.25 Programmers_두 수의 합 (0) | 2023.08.26 |
---|---|
[TIL] 2023.08.23 Programmers_배열의 길이를 2의 거듭제곱으로 만들기 (0) | 2023.08.24 |
[TIL] 2023.08.16 Programmers_숨어있는 숫자의 덧셈 (2) (0) | 2023.08.16 |
[TIL] 2023.08.15 Programmers_문자열 묶기 (0) | 2023.08.15 |
[TIL] 2023.08.14 Programmers_세 개의 구분자 (0) | 2023.08.15 |
댓글