[Javascript] LV.0 옷가게 할인 받기

은비·2023년 8월 2일
1

Programmers_CodingTest

목록 보기
25/72

문제 설명

머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.

구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 10 ≤ price ≤ 1,000,000
    • price는 10원 단위로(1의 자리가 0) 주어집니다.
  • 소수점 이하를 버린 정수를 return합니다.

입출력 예

priceresult
150,000142,500
580,000464,000

입출력 예 설명

입출력 예 #1

  • 150,000원에서 5%를 할인한 142,500원을 return 합니다.

입출력 예 #2

  • 580,000원에서 20%를 할인한 464,000원을 return 합니다.

✍ SOLUTION1

const solution = (price) => {
    if(price >= 500000) {
        return price - price * 0.2;
    } else if(price >= 300000) {
        return price - price * 0.1;
    } else if(price >= 100000) {
        return price -price * 0.05;
    } else {
        return price;
    }
}

/* 내가 처음에 작성한 코드이다. 실행하면 정답이라고 나오지만 결과는 실패로 떠서 뭐가 실수인지 처음부터
문제를 다시 읽으며 제대로 살펴 보았더니,, 제한사항에 소수점 이하를 버린 정수를 return 한다는 문구가
있다는 것을 발견하였다.. 코드를 다시 작성 후 제출하니 성공! 아래에 수정한 코드를 작성해 보았다. */
const solution = (price) => {
    if(price >= 500000) {
        return Math.floor(price * 0.8); // 위의 price - price * 0.2와 같은 코드
    } else if(price >= 300000) {
        return Math.floor(price * 0.9);
    } else if(price >= 100000) {
        return Math.floor(price * 0.95);
    } else {
        return price;
    }
}

/* Math.floor를 이용하여 소수점은 내림을 해주어 return 결과가 정수로 나오게끔 해주었다.*/

✍ SOLUTION2

const solution = (price) => 
    price >= 500000 ? Math.floor(price * 0.8) 
    : price >= 300000 ? Math.floor(price * 0.9) 
    : price >= 100000 ? Math.floor(price * 0.95) : Math.floor(price);

/* SOLUTION1의 코드를 삼항연산자로 바꾸어 작성해 보았다. */

프로그래머스 스쿨 | 코딩테스트 연습

0개의 댓글