문제 설명
머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.
구매한 옷의 가격price
가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.
function solution(price) {
if (price >= 500000) {
return Math.floor(price * 0.8)
} else if (price >= 300000) {
return Math.floor(price * 0.9)
} else if (price >= 100000) {
return Math.floor(price * 0.95)
} else return price
}
굉장히 쉬운 문제인데 2가지를 간과하여 틀렸었다.
if
문이 위에서부터 차례대로 작동되며 조건을 만족할 때 바로 return된다는 사실을 잊은 채, 맨 처음 코드를 작성할 때 10만원 이상인 경우를 가장 처음 작성하였다. 그러다보니 price
가 30만 혹은 50만 이상인 경우에는 내가 원하는 0.9 혹은 0.8까지 내려오지 않고 바로 return되어 틀린 답을 반환하였다. Math.floor
를 쓰지 않고 문제를 풀었다. 따라서 오늘 문제를 풀며 배운 두 가지는 다음과 같다.
if
문을 쓸 때 유의하기!!!function solution(price) {
if (price >= 100000 && price < 300000) {
return Math.floor(price * .95)
} else if (price >= 300000 && price < 500000) {
return Math.floor(price * .9)
} else if (price >= 500000) {
return Math.floor(price * .8)
} else {
return price
}
}
만약 내가 이렇게 if
문의 작동 방법을 유의하며 price
의 범위를 &&
연산자를 사용하여 정확히 작성했다면 한 번에 바로 풀 수 있었다. 사소한 것을 놓치지 않도록 주의해야겠다.