자기계발
프로그래머스
옷가게 할인 받기

프로그래머스 · 옷가게 할인 받기

문제

옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해 준다. 옷의 가격 price(10 이상 1,000,000 이하, 10원 단위)가 주어질 때 지불할 금액을 소수점 이하를 버린 정수로 반환한다. 예를 들어 150,000원이면 142,500원, 580,000원이면 464,000원이다.

풀이

금액이 클수록 할인율이 높으므로 50만 원, 30만 원, 10만 원 순으로 if - elif - else를 나열해 할인율을 곱하고, 마지막에 int()로 정수로 바꿔 반환한다.

def solution(price):
    if price >= 500000:
        answer = price*0.8
    elif price >= 300000:
        answer = price*0.9
    elif price >= 100000:
        answer = price*0.95
    else:
        answer = price
 
    return int(answer)

짚고 갈 점

조건은 높은 금액부터 검사해야 한다. if는 위에서부터 차례로 조건을 확인하고 처음 참인 곳에서 멈추기 때문이다.

# 잘못된 if문 설계 예시
if price >= 100000:
    answer = price*0.95
elif price >= 300000:
    answer = price*0.9
elif price >= 500000:
    answer = price*0.8
else:
    answer = price

이렇게 10만 원부터 검사하면 50만 원이 넘어도, 40만 원이어도 첫 조건에서 5% 할인만 적용되고 아래 조건은 검사되지 않는다. 단순한 if - else는 순서를 크게 신경 쓰지 않아도 되지만, elif로 조건이 여러 개 이어질 때는 이런 점을 생각하며 작성해야 한다.

출처