[프로그래머스-자바스크립트] 옷가게 할인 받기

호박이와 칼림바·2023년 9월 11일

프로그래머스) Level0

목록 보기
10/25
post-thumbnail

코딩테스트 입문 - 옷가게 할인 받기 문제


📢 문제 설명

머쓱이네 옷가게는 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 합니다.


💎 나의 풀이

function solution(price) {
    if(price < 100000) return price;
    else if(price >= 100000 && price < 300000) 
        return ~~(price*0.95);
    else if(price >= 300000 && price < 500000) 
        return ~~(price*0.9);
    else return ~~(price*0.8);
}

완전히 마음에 들지 않는다. else if문을 사용해서 조건문이 길어졌다.
다른 사람의 풀이를 봐보자.

💡 다른 사람의 풀이

function solution(price) {
    if (price >= 500000)
        return parseInt(price*(1-0.2));

    if (price >= 300000)
        return parseInt(price*(1-0.1));

    if (price >= 100000)
        return parseInt(price*(1-0.05));  

    return price
}

위의 코드를 내 방식대로 줄여보겠다.

function solution(price) {
    if (price >= 500000) return ~~(price*0.8);
    if (price >= 300000) return ~~(price*0.9);
    if (price >= 100000) return ~~(price*0.95);  
    return price
}

이 풀이를 가져온 이유는 else if문을 사용하지 않고 오로지 if문만 사용해서이다.
나는 else if문을 사용해서 && 연산자까지 사용하게 되니 조건문이 길어졌는데, 이 분의 코드는 제일 큰 값(500000)부터 차례대로 작은 값(100000)에 if문으로 조건을 달았다.

100000원 보다 큰 경우일 때, 300000원 이상과 500000원 이상도 포함 되는 경우이다. 그래서 else if문으로 코드를 짜면 && 연산자도 사용하게 되는 것이다.

profile
프론트엔드 개발자입니다.

0개의 댓글