[프로그래머스] 옷가게 할인 받기
카테고리 : 컴퓨터 공학
태그: programmers · Code Refactoring · 참고 할 만한 다른 사람의 코드 · 코딩 기초 트레이닝 · 프로그래머스 · 코딩테스트 연습 · JavaScript · 옷가게 할인 받기 · js 옷가게 할인 받기
태그: programmers · Code Refactoring · 참고 할 만한 다른 사람의 코드 · 코딩 기초 트레이닝 · 프로그래머스 · 코딩테스트 연습 · JavaScript · 옷가게 할인 받기 · js 옷가게 할인 받기
문제 설명
머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 10 ≤
price
≤ 1,000,000price
는 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 합니다.
나의 풀이
function solution(price) {
if (price >= 100000 && price < 300000) {
return Math.floor(price * 0.95);
}
if (price >= 300000 && price < 500000) {
return Math.floor(price * 0.9);
}
if (price >= 500000) {
return Math.floor(price * 0.8);
}
return price;
}
나의 두번째 풀이(Code Refactoring)
function solution(price) {
switch (true) {
case price >= 500000:
return ~~(price * 0.8);
case price >= 300000:
return ~~(price * 0.9);
case price >= 100000:
return ~~(price * 0.95);
default:
return price;
}
}
//switch case문으로 간결하게 코드 구성
//price를 기준으로 조건문이 실행되니 가장 switch case로 가장 큰 값 부터 걸러준다
참고 할 만한 다른 사람의 코드
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;
};
// 반복문을 사용한 풀이 방법