옷가게 할인 받기
2024. 7. 12. 18:00ㆍ코딩테스트 입문
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 합니다.
가격 price가 주어집니다. 주어진 가격의 범위에 따라 다른 할인율을 적용하면 되는 문제입니다.
- 100,000 ≤ price : 5%
- 300000 ≤ price : 10%
- 500000 ≤ price : 20%
파이썬을 통해서 한 줄로 작성해봤는데, 가독성이 좋지는 않네요.
def solution(price):
answer = price * 0.8 if price >= 500000 else (price * 0.9 if price >= 300000 else (price * 0.95 if price >= 100000 else price))
return int(answer)
if - else 문을 통해서 구현한 코드입니다.
다른 사람들의 풀이 중 깔끔한 코드를 찾아 올려봅니다. 확장성까지 고려한 코드라 좋네요.
def solution(price):
discount_rates = {500000: 0.8, 300000: 0.9, 100000: 0.95, 0: 1}
for discount_price, discount_rate in discount_rates.items():
if price >= discount_price:
return int(price * discount_rate)
discount_rates라는 딕셔너리를 이용해서, 각각 할인 최소 금액과 할인율을 나누었습니다.
그 다음, items로 값들을 출력해 앞에서부터 할인 최소 금액을 확인하는데요, return으로 도중에 함수가 끊기기 때문에 뒤에 조건문이 실행되면 어떡하지? 하고 걱정할 필요가 없습니다.
딕셔너리를 통해 푼 풀이가 깔끔해 올려보았습니다.
'코딩테스트 입문' 카테고리의 다른 글
나이 출력 (0) | 2024.07.14 |
---|---|
아이스 아메리카노 (0) | 2024.07.13 |
배열의 평균값 (0) | 2024.07.11 |
피자 나눠 먹기 (3) (0) | 2024.07.10 |
피자 나눠 먹기 (2) (0) | 2024.07.09 |