본문 바로가기
Algorithm/Programmers

[Programmers] Lv.0 | 옷가게 할인 받기 | Java

by unknownomad 2025. 11. 3.

문제

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);

 

이걸 단계별로 풀면:

  1. 100 - discount → 남은 퍼센트
    예를 들어 discount = 20이면 80
  2. price * (100 - discount) →
    가격 × 남은 퍼센트값
    예: 580000 * 80 = 46,400,000
  3. / 100.0 →
    퍼센트를 실제 “비율”로 바꾸기 위해 100으로 나눔
    즉 46,400,000 ÷ 100 = 464,000.0
  4. (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 × 남은 비율 정수 퍼센트를 이용한 같은 계산

 

댓글