https://school.programmers.co.kr/learn/courses/30/lessons/120818
문제 설명
머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.
구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 10 ≤ price ≤ 1,000,000
- price는 10원 단위로(1의 자리가 0) 주어집니다.
- 소수점 이하를 버린 정수를 return 합니다.
입출력 예
price | result |
150,000 | 142,500 |
580,000 | 464,000 |
입출력 예 설명
입출력 예 #1
- 150,000원에서 5%를 할인한 142,500원을 return 합니다.
입출력 예 #2
- 580,000원에서 20%를 할인한 464,000원을 return 합니다.
나의 풀이
각 가격에 맞게 할인 가격을 계산해 마지막에 할인 가격을 반올림 해준 뒤 원래 가격에서 빼주었습니다. (Testcase 중에 소수점이 나올 경우가 있기 때문에 반올림은 해주어야 합니다.)
function solution(price) {
let discount = 0;
if (price >= 500000) {
discount = price * 0.2;
} else if (price >= 300000) {
discount = price * 0.1;
} else if (price >= 100000) {
discount = price * 0.05;
}
return price - Math.ceil(discount);
}
다른 풀이
다른 분의 풀이 중 런타임은 비슷하지만 화살표 함수(arrow function)를 사용하고 할인 %를 객체의 key와 value로 한 쌍의 배열로 만들어 계산하는 방법이 좋은 풀이였습니다.
const discounts = [
[500000, 20],
[300000, 10],
[100000, 5],
]
const solution = (price) => {
for (const discount of discounts)
if (price >= discount[0])
return Math.floor(price - price * discount[1] / 100)
return price
}
'코딩 문제 > 프로그래머스 [ JavaScript ]' 카테고리의 다른 글
[ 프로그래머스 / JavaScript ] [ 2022 KAKAO BLIND RECRUITMENT ] 신고 결과 받기 (0) | 2022.10.26 |
---|---|
[ 프로그래머스 / JavaScript ] 분수의 덧셈 (0) | 2022.10.25 |
[ 프로그래머스 / JavaScript ] 최빈값 구하기 (0) | 2022.10.24 |
[ 프로그래머스 / JavaScript ] 피자 나눠 먹기 (2) (0) | 2022.10.24 |
[ 프로그래머스 / JavaScript ] 피자 나눠 먹기 (1) (0) | 2022.10.23 |
댓글