문제다.
//머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.
//구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.
public class Main {
public static void main(String[] args) {
}
}
class Solution {
public int solution(int price) {
int sale;
if (price >= 100000 && price < 300000){
sale = price / 100;
price -= sale*10;
}
if (price >= 300000 && price < 500000){
sale = price / 100;
price -= sale*20;
}
return price;
}
}
일단 이건 정답이 아니고 평균치를 구해서 10퍼나 20퍼를 원래 가격에서 빼는 식으로 하려고 하는데 뭔가 잘못되었나보다.
아니다. 100,000일땐 90,000으로 잘 나오는 것 보니 디버그를 좀 돌려봐야될 것 같다.
아 문제를 잘못 읽었구나 10만원 이상에서 30만원까지는 5프로 할인이다. 다시 수정해보자
class Solution {
public int solution(int price) {
int sale;
if (price >= 100000 && price < 300000){
sale = price / 100;
price -= sale*5;
}
if (price >= 300000 && price < 500000){
sale = price / 100;
price -= sale*10;
}
if (price >= 500000){
sale = price / 100;
price -= sale*20;
}
return price;
}
}
테스트 케이스는 다 통과한다.
아 제출하니까 몇가지가 틀려서 else if 로 수정해 보았다.
그래도 안되네.. 소수점이 문제인건가? 나눌 때 버려지는 소수점 때문에 문제가 생기는걸까?
그럼 소수점으로 할인률을 곱하고 return값을 int로 형변환 해보자.
class Solution {
public int solution(int price) {
if (price >= 100000 && price < 300000) {
price -= price * 0.05;
} else if (price >= 300000 && price < 500000) {
price -= price * 0.1;
} else if (price >= 500000) {
price -= price * 0.2;
}
return (int) price;
}
}
바로 값을 구하면서 필요없어진 sale 변수는 지웠다.
오케이 이렇게 하니까 통과된다! 아마도 소수점으로 가면서 누락되는 데이터 때문에 몇가지 테스트 케이스에서 걸렸나보다. 다른 사람 답도 궁금하니 한번 보자.
class Solution {
public int solution(int price) {
int answer = 0;
if(price>=500000) return (int)(price*0.8);
if(price>=300000) return (int)(price*0.9);
if(price>=100000) return (int)(price*0.95);
return price;
}
}
이게 제일 인상적이다. 높은 값 부터 계산해서 바로 할인된 값을 도출하고 거기에 바로 형변환.. 높은 할인률부터 계산하니까 조건문을 더 짧게 쓸 수 있는데다 계산하는 것도 바로 할인된 값을 도출 할 수 있는데 난 왜 할인률을 구해서 빼야된다고만 생각했을까. 역시 아직 멀었다.
'Coding History' 카테고리의 다른 글
2024. 07. 02. 문제풀이 (1) | 2024.07.02 |
---|---|
국비 지원 IT(웹앱개발) 취업반 강의 19일차 (ArticleManager) (0) | 2024.07.02 |
MVC 패턴이란? (0) | 2024.07.01 |
국비 지원 IT(웹앱개발) 취업반 강의 18일차 (motivation 앱 만들기) (1) | 2024.07.01 |
국비 지원 IT(웹앱개발) 취업반 강의 17일차 (motivation 앱 만들기) (1) | 2024.06.30 |