해당 문제를 풀 때는 다음의 사항을 주의해야 합니다.
- 계산결과에 대해서 데이터타입을 고려해야한다.
- 가격의 구간범위를 나눌 때, 명시적으로 주어진 범위 외에도 고려해야 한다.
- 주어진 문제에 대해서는 결과값을 정수형으로 맞춰야하는데,
할인율을 반영한 0.8, 0.9, 0.95 등의 소수값을 곱하면 double로 데이터타입이 인식되기 때문에, 이에 대해서 결과값을 int로 형변환을 해주어야한다.
// 방법1: 형변환
answer = (int) (price*(0.8));
// 방법2: 정수 이용한 계산
answer = price * 9 / 10;
- 명시적으로 주어진 구간들 외의 경우를 누락하기 쉽다.
특정 구간들 외에는 할인율을 적용하지 않는 것을 주의해야 한다.- 해당 문제에서는 높은 숫자의 범위부터 if-else구문을 활용하여
조건식을 설정하는 것이 더 깔끔하다.
if (price >= 500000){
answer = (int) (price*(0.8));
} else if (price >= 300000) {
answer = price * 9 / 10;
} else if (price >= 100000) {
answer = price * 95 / 100;
} else { // 이부분!!! 누락주의!!!
answer = price;
}
[문제 출처] 프로그래머스 코딩테스트 입문 Day05 - 옷가게 할인 받기
https://school.programmers.co.kr/learn/courses/30/lessons/120818