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;
}
}
단순한 계산 문제라고 생각했는데, 언어별 데이터 타입의 특성을 정확히 아는 것이 중요하다는 것을 깨달았다.
'Problem Solving' 카테고리의 다른 글
| [Java] 프로그래머스 - 완주하지 못한 선수 (1) | 2026.03.31 |
|---|---|
| [Java] 프로그래머스 - 주식가격 (0) | 2026.03.30 |
| [Java] 프로그래머스 - 다리를 지나는 트럭 (0) | 2026.03.27 |
| [Java] 프로그래머스 - 프로세스 (0) | 2026.03.25 |
| [Java] 프로그래머스 - 올바른 괄호 (0) | 2026.03.24 |