본문 바로가기
Problem Solving

[Java] 프로그래머스 - 옷가게 할인 받기

by vanilalatte 2026. 2. 9.

1. 문제 설명

특정 금액 이상 구매 시 차등 할인 적용 (5%, 10%, 20%)

소수점 이하를 버린 정수(int)를 반환해야 함.

 

2. Trouble Shooting

answer = price * 0.95;

위와 같이 작성했을 때 컴파일 에러가 발생했다.

Java에서 실수를 곱하는 순간 결과값은 기본적으로 double 타입이 되기 때문이다.

 

3. 해결 방법

answer = (int)(price * 0.8);

계산된 전체 결과값에 (int)를 붙여 강제로 소수점을 떼어내고 정수로 변환했다.

이를 명시적 형변환이라고 한다.

 

4. 최종 코드

class Solution {
    public int solution(int price) {
        int answer = 0;
        if(price >= 100000 && price < 300000){
            answer = (int)(price * 0.95);
        } else if (price >= 300000 && price < 500000) {
            answer = (int)(price * 0.9);
        } else if (price >= 500000){
             answer = (int)(price * 0.8);
        } else{
            answer = price;
        }
        return answer;
    }
}

 

단순한 계산 문제라고 생각했는데, 언어별 데이터 타입의 특성을 정확히 아는 것이 중요하다는 것을 깨달았다.