티스토리 뷰

문제 설명

머쓱이네(머쓱타드╰(*°▽°*)╯) 옷가게는 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 합니다.

 


나의 풀이

Python

if문을 사용할 줄 아느냐라고 묻는 문제 같아서 아래와 같이 풀었다.

def solution(price):
    if price < 100000:
        return price
    elif price >= 100000 and price < 300000:
        return int(price - price * 0.05)
    elif price >= 300000 and price < 500000:
        return int(price - price * 0.1)
    elif price >= 500000 and price <= 1000000:
        return int(price - price * 0.2)

Sehyeon Jeong라는 분이 Dictionary를 사용해 기깔나게 푼걸 보고 박수를 쳤다.

# Sehyeon Jeong님의 풀이
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)

solution이라는 함수에 price라는 매개변수:

discount_rates라는 딕셔너리를 선언하고 키와 값을 정해준다. 이때 500000은 20%할인한 0.8 300000은 10% 할인한 0.9 100000은 5% 할인한 0.95 0은 할인이 없으니 1로 키와 값을 정해준다.

반복문을 discount_price와 discount_rate를 discount_rates.items()의 범주에서 돌린다.

-> .items()는 키와 값의 쌍을 얻을 수 있는 함수이기 때문에 딕셔너리 discount_rates의 키들은 discount_price가 되고 값들은 discount_rate가 된다.

만약 매개변수 price가 discount_price(500000, 300000, 100000, 0)보다 크거나 같다면 price 곱하기 discount_rate(0.8, 0.9, 0.95, 1)을 반환한다.

 

정말 대단한 코드이다. 👏👏👏👏👏👏👏👏👏👏

 

 

프로그래머스에서 푼 문제를 복습하는 공간입니다.
https://programmers.co.kr/
 

프로그래머스

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

programmers.co.kr

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함