반복문과 딕셔너리를 이용한 문제해결 (세일문제)

gyeorrr·2023년 3월 16일
0

프로그래머스 문제를 풀다가 아는 방식을 너무나도 잘 응용하신분이 있어서 들고왔다

문제

10만 원 이상 사면 5%,
30만 원 이상 사면 10%,
50만 원 이상 사면 20%를 할인
구매한 옷의 가격 price가 주어질 때,
지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.

나의문제풀이

def solution(price):
    if price >= 100000 and price < 300000:
        price *= 0.95
    if price >= 300000 and price < 500000:
        price *= 0.9
    if price >= 500000:
        price *= 0.8
    return int(price)

좀 더 효율적으로 만들 수 있었다 (500,000 부터 위에 있었다면 더 효율적이었을거임)
아무튼 이것을 dict와 반복문을 이용해서 풀 수 있다

def solution(price):
    sale = {500000: 0.8 , 300000: 0.9, 100000 : 0.95, 0: 1}
    for k,v in sale.items():
        if price >= k:
            answer = price * v
            return int(answer)

sale 이런식으로 50만과 세일을 묶는다
for k ,v in sale.items(): 반복하는데 items()를 사용함으로써 k는 500,000 v는 0.8이 호출 될 수 있도록 만듬
if price >= k: price 가 k 보다 크거나 같다면
answer = price * v 주어진가격(price) * 세일값(v)
이런식으로 응용할 수 있다


딕셔너리나 items()는 해당블로그에서 리스트와 딕셔너리https://velog.io/@gyeori/리스트와-딕셔너리 를 참고하면 됨

0개의 댓글