옷가게 할인 받기
https://school.programmers.co.kr/learn/courses/30/lessons/120818
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1) 문제
50만 원 이상 사면 20%를 할인해줍니다.
구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.
10 ≤ price ≤ 1,000,000
price는 10원 단위로(1의 자리가 0) 주어집니다.
소수점 이하를 버린 정수를 return합니다.
2) 예시
price | result |
---|---|
150,000 | 142,500 |
580,000 | 464,000 |
입출력 예 #1
150,000원에서 5%를 할인한 142,500원을 return 합니다.
입출력 예 #2
580,000원에서 20%를 할인한 464,000원을 return 합니다.
3) 풀이
1. 클래스 선언을 해줍니다
● class Solution {
클래스명은 대문자로 시작해야하고, 정답이라는 의미로 Solution이라는 단어를 사용하였습니다.
2. 메소드 선언을 해줍니다.
● public int solution(int n) {
정수 n, slice를 매개변수로 사용하는 solution 메소드를 선언해줍니다.
메소드의 결과값인 solution은 정수이 나오므로, 데이터 타입을 int로 해줍니다.
3. 가격인 price에 대한 제한사항을 확인하고, 만족하지 않는다면 예외처리합니다.
● if (price < 10 || price > 1_000_000) {
throw new IllegalArgumentException("price는 10 이상 1,000,000 이하여야합니다.");
}
※ 숫자_숫자
일상생활에서 숫자의 천단위를 끊을 경우 ','를 사용하게 됩니다. (예시 : 10,000원)
하지만 java7부터 도입된 기능으로 가시성을 높이기위해 언더바 _를 숫자를 끊어쓰기위해 사용합니다.
예를 들어 10만이라면, 100_000 입니다.
4. if문과 else if문을 사용하여 50만원 이상 구매할 때, 30만원 이상 구매할 때, 10만원 이상 구매할 때, 그외의 경우
총 4가지 조건에 의해 지불해야할 가격을 totalPayment로 값을 지정합니다.
예를 들어, 50만원 이상 구매할 때 20프로 할인을 받는다는 뜻은 price의 80%가격을 지불하는 것과 동일합니다.
단, 이 때 소수점을 곱해주게되면 실수가 되어버리니 int로 정수 형변환을 해줘야합니다.
※ 주의
조건문 순서를 10만원 이상일 때, 30만원 이상일 때, 50만원 이상일 때로 해버리면 10만원 이상일 때 할인 10% 적용해버리고, 이미 조건은 만족시켜버리니 그 이후의 조건문은 발동하지 않습니다. 그래서 50만원 이상을 구매했다고해도, 10만원 이상 조건에서 할인이 적용되어버리니 올바른 가격이 아니게 됩니다.
● int totalPayment = 0;
if (price >= 500_000) {
totalPayment = (int) (price * 0.8);
} else if (price >= 300_000) {
totalPayment = (int) (price * 0.9);
} else if (price >= 100_000) {
totalPayment = (int) (price * 0.95);
} else {
totalPayment = price;
}
return totalPayment;
}
}
※ else if란
else if는 else 뒤에 오는 조건이 true일 때만 실행되는 구문입니다.
여러 개의 조건을 순차적으로 검사하고자 할 때 사용됩니다.
if (condition1) {
// condition1이 true일 때 실행되는 코드
} else if (condition2) {
// condition1이 false이고 condition2가 true일 때 실행되는 코드
} else if (condition3) {
// condition1과 condition2가 false이고 condition3이 true일 때 실행되는 코드
} else {
// 모든 조건이 false일 때 실행되는 코드
}
4) 코드
class Solution {
public int solution(int price) {
if (price < 10 || price > 1_000_000) {
throw new IllegalArgumentException("price는 10 이상 1,000,000 이하여야합니다.");
}
int totalPayment = 0;
if (price >= 500_000) {
totalPayment = (int) (price * 0.8);
} else if (price >= 300_000) {
totalPayment = (int) (price * 0.9);
} else if (price >= 100_000) {
totalPayment = (int) (price * 0.95);
} else {
totalPayment = price;
}
return totalPayment;
}
}
* 비슷하면서도 다른 풀이방식 (참고용)
class Solution {
public int solution(int price) {
if (price < 10 || price > 1_000_000 || price % 10 != 0) {
throw new IllegalArgumentException("가격은 10 이상 1,000,000 이하이며, 10의 배수여야 합니다.");
}
int discountRate = 0;
if (price >= 500_000) {
discountRate = 20;
} else if (price >= 300_000) {
discountRate = 10;
} else if (price >= 100_000) {
discountRate = 5;
}
int discountedPrice = price - (price * discountRate / 100);
return discountedPrice;
}
}
'Programmers Coding Test > Java' 카테고리의 다른 글
[프로그래머스 120823] Java - 코딩테스트 입문 / 직각삼각형 출력하기 (2) | 2024.02.01 |
---|---|
[프로그래머스 120822] Java - 코딩테스트 입문 / 문자열 뒤집기 (0) | 2024.02.01 |
[프로그래머스 120815] Java - 코딩테스트 입문 / 피자 나눠 먹기 (2) (0) | 2024.01.31 |
[프로그래머스 120841] Java - 코딩테스트 입문 / 점의 위치 구하기 (1) | 2024.01.31 |
[프로그래머스 120830] Java - 코딩테스트 입문 / 양꼬치 (0) | 2024.01.31 |