본문 바로가기
코딩 문제/프로그래머스 [ JavaScript ]

[ 프로그래머스 / JavaScript ] 옷가게 할인 받기

by CODESIGN 2022. 10. 25.

https://school.programmers.co.kr/learn/courses/30/lessons/120818

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제 설명


머쓱이네 옷가게는 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
}

 

댓글