❗ 문제
출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/courses/30/lessons/181837
팀의 막내인 철수는 아메리카노와 카페 라테만 판매하는 카페에서 팀원들의 커피를 사려고 합니다.
아메리카노와 카페 라테의 가격은 차가운 것과 뜨거운 것 상관없이 각각 4500, 5000원입니다.
각 팀원에게 마실 메뉴를 적어달라고 하였고,
그중에서 메뉴만 적은 팀원의 것은 차가운 것으로 통일하고
"아무거나"를 적은 팀원의 것은 차가운 아메리카노로 통일하기로 하였습니다.
각 직원이 적은 메뉴가 문자열 배열 order로 주어질 때, 카페에서 결제하게 될 금액을 return 하는 solution 함수를 작성해 주세요. order의 원소는 아래의 것들만 들어오고, 각각의 의미는 다음과 같습니다.
order의 원소의미
order의 원소 의미 "iceamericano", "americanoice" 차가운 아메리카노 "hotamericano", "americanohot" 따뜻한 아메리카노 "icecafelatte", "cafelatteice" 차가운 카페 라테 "hotcafelatte", "cafelattehot" 따뜻한 카페 라테 "americano" 아메리카노 "cafelatte" 카페 라테 "anything" 아무거나
❓ 나의 풀이
function solution(order) {
let answer = 0;
order.map((menu) => {
if (menu.includes("americano")) {
answer += 4500;
} else if (menu.includes("cafelatte")) {
answer += 5000;
} else {
answer += 4500;
}
})
return answer;
}
map 과 조건문, includes 메서드를 이용해서 문제를 풀었다.
문제에서 아메리카노와 카페 라테의 가격은 차가운 것과 뜨거운 것 상관없이 각각 4500, 5000원이라고 했으니,
americano 문자가 들어가면 무조건 4500원, cafelatte 문자가 들어가면 무조건 5000원이라는 것이다.
그래서 includes 메서드를 이용해 조건문을 만들어서
americano 문자를 포함하고 있으면 answer 에 4500원을 더했고
cafelatte 문자를 포함하고 있으면 answer 에 5000원을 더했다.
anything 의 경우에는 차가운 아이스아메리카노로 통일하기 때문에 4500원을 더해준다.
++) 간과한점
처음에 문제를 풀 때, 차가운 것과 뜨거운 것 상관없이 가격이 똑같다는 것을 확인하지 못해서
코드가 더 복잡했었는데 다른 사람의 풀이를 본 후, 뭔가 이상해서 문제를 다시 읽어보고 알아챘다.
문제를 꼼꼼히 읽자...
++) 삼항연산자
function solution(order) {
let answer = 0;
order.map((menu) => {
menu.includes("cafelatte") ? answer += 5000 : answer += 4500;
})
return answer;
}
글을 적고 생각해 보니, anything 의 경우도 아메리카노에 포함되니까
cafelatte 의 경우만 찾아내면 된다는 것을 깨달았다.
cafelatte 를 문자를 포함하고 있을 때만 5000원을 더하고, 나머지 경우는 모두 4500원을 더한다. 좀 더 깔꼼해졌당.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 세균 증식 (Level 0, JavaScript) (0) | 2024.08.12 |
---|---|
[프로그래머스] 7의 개수 (Level 0, JavaScript) (0) | 2024.08.05 |
[프로그래머스] 모음 제거 (Level 0, JavaScript) (0) | 2024.07.30 |
[프로그래머스] 배열 만들기 3 (Level 0, JavaScript) (0) | 2024.07.26 |
[프로그래머스] 특정한 문자를 대문자로 바꾸기 (Level 0, JavaScript) (0) | 2024.04.30 |