문제
https://school.programmers.co.kr/learn/courses/30/lessons/120818

풀이
class Solution {
public int solution(int price) {
if (price >= 500000) price *= 0.8;
else if (price >= 300000) price *= 0.9;
else if (price >= 100000) price *= 0.95;
return (int) price;
}
}
class Solution {
public int solution(int price) {
int discount = 0;
if (price >= 500000) discount = 20;
else if (price >= 300000) discount = 10;
else if (price >= 100000) discount = 5;
return (int) (price * (100 - discount) / 100.0);
}
}
참고
a / b는 단순하지만, 어느 쪽이 분자(numerator)고 분모(denominator)인지,
그리고 어떤 단위의 계산을 하는지를 감각적으로 이해하기
핵심 개념 정리
a / b → “a를 b로 나눈다”, 즉
👉 a ÷ b = a를 b개의 조각으로 나눈 값
우리 코드에 적용해 보면
return (int) (price * (100 - discount) / 100.0);
이걸 단계별로 풀면:
- 100 - discount → 남은 퍼센트
예를 들어 discount = 20이면 80 - price * (100 - discount) →
가격 × 남은 퍼센트값
예: 580000 * 80 = 46,400,000 - / 100.0 →
퍼센트를 실제 “비율”로 바꾸기 위해 100으로 나눔
즉 46,400,000 ÷ 100 = 464,000.0 - (int) →
소수점 버리고 정수로 반환
비유로 이해하기
예를 들어 **80%**를 곱한다는 건 "전체의 100 중 80만큼"을 곱한다는 뜻
즉, price * 80 / 100
= “price의 80%만 남긴다”
= “20% 할인한다”
기억하기 쉬운 팁
| 연산 | 읽는 방법 | 의미 |
| a / b | a를 b로 나눈다 | b개로 나눈 한 조각 크기 |
| price * 0.8 | price의 80% | 할인 후 금액 |
| price * (100 - discount) / 100 | price × 남은 비율 | 정수 퍼센트를 이용한 같은 계산 |
'Algorithm > Programmers' 카테고리의 다른 글
| [Programmers] Lv.0 | 피자 나눠 먹기 (3) | Java (0) | 2025.11.04 |
|---|---|
| [Programmers] Lv.0 | 배열의 평균값 | Java (0) | 2025.11.04 |
| [Programmers] Lv.0 | 아이스 아메리카노 | java (0) | 2025.11.02 |
| [Programmers] Lv.0 | 나이 출력 | Java (0) | 2025.11.01 |
| [Programmers] Lv.0 | 배열 뒤집기 | Java (0) | 2025.11.01 |
댓글