극동대학교\AI컴퓨터공학과\JAVA/프로그래머스 코딩테스트 입문

[프로그래머스, 입문] 옷가게 할인 받기

sundori 2024. 6. 14. 18:45

목차

    문제 설명

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

     

    인터페이스

    인터페이스는 다중 상속을 하기 위해 사용하는데 추상 클래스와 비슷한 개념이지만 더 제한적이라는 특징이있다.

    추상 클래스는 속성, 일반 메서드, 생성자, 추상 메서드 등 모두 가질 수 있지만 인터페이스는 추상 메서드만 가질 수있다.

    또한 인터페이스의 경우 속성 앞에 static final(상수로 취급)을 붙여야한다.

    해결 방법

    구매 가격이 50만원이라면 50만원에 0.8을 곱하면 할인된 가격이 나온다.

    구매 가격이 30만원이라면 30만원에 0.9를 곱하면 할인된 가격이 나온다.

    interface DiscountPolicy {
        int applyDiscount(int price);
    }
    
    abstract class AbstractDiscountPolicy implements DiscountPolicy {
        @Override
        public int applyDiscount(int price) {
            return price >= 500000 ? price * 80 / 100 :
                   price >= 300000 ? price * 90 / 100 :
                   price >= 100000 ? price * 95 / 100 :
                   price;  // 할인 없음
        }
    }
    
    class Solution extends AbstractDiscountPolicy {
        public int solution(int price) {
            return applyDiscount(price);
        }
    }