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);
}
}
'Programers코테연습(Java)' 카테고리의 다른 글
[Programmers TIL 4일차] 문자열 정렬하기(2) (0) | 2024.04.22 |
---|---|
[Programmers TIL 3일차] 문자열 정렬하기(1) (0) | 2024.04.21 |
[Programmers TIL 2일차] 달리기 경주 (0) | 2024.04.20 |
[Programmers TIL 2일차] 가채점 (0) | 2024.04.20 |
[Programmers TIL 1일차] 붕대 감기 (0) | 2024.04.19 |