Programers코테연습(Java)

[Programmers TIL 3일차] 옷 가게 할인받기

코철이 2024. 4. 21. 22:33

1. 문제

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

 

  • 10 ≤ price ≤ 1,000,000
    • price는 10원 단위로(1의 자리가 0) 주어집니다.
  • 소수점 이하를 버린 정수를 return합니다.

 

 

2. 풀이

항상 문제 풀고 다른 사람의 문제풀이를 보면 삼항연산자를 이용해서 문제를 푸는 사람이 있어서 신기했다.

삼항연산자를 이용해서 나도 풀어보자 하고 이 문제를 풀었다.

price에 입력받은 가격에 할인율을 계산해야 하는데, price* 0.80을 하면 정수형타입이 아닌 실수형 타입으로 변경되기 때문에 price가 300000원 이면 300000 * 0.80이 되면 double타입의 240000.0이 된다.

이를 해결하기 위해 Math.floor를 이용하여 소수점 자리를 버려주고 (int)를 이용하여 형변환을 해주었다.

class Solution {
    public int solution(int price) {

        int discount1= (int)Math.floor(price * 0.80);
        int discount2= (int)Math.floor(price * 0.90);
        int discount3= (int)Math.floor(price * 0.95);

        return price >= 500000 ? discount1 : price >=300000 ? discount2 : price >=100000 ? discount3 : price; 
            
    }
}

 

이렇게 하고 제출하니 정상적으로 테스트를 통과했으나 나 처럼 따로 변수 지정해주지 않고 그대로 return문에서 형변환 해준 사람이 있어서 좀 더 연습을 해야겠다는 생각이 든다.

실제로도 아래의 코드가 실행시간이 줄어들었다.

 

class Solution {
    public int solution(int price) {
           
        return (int)( price >= 500000 ? price*0.80 : price >=300000 ? price*0.90 : price >=100000 ? price*0.95 : price); 
            
    }
}