머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.
function solution(price) {
var answer = 0;
if ( price > 500000 ){
answer = Math.floor(price*0.8)
} else if ( price > 300000 ){
answer = Math.floor(price*0.9)
} else if ( price > 100000 ){
answer = Math.floor(price*0.95)
} else {answer = price }
return answer;
}
경우의 수를 if문으로 처리하였다 당연히 중첩 삼항연산자로도 변환이 가능한데
function solution(price) {
return price >= 500000 ? Math.floor(price * 0.8)
: price >= 300000 ? Math.floor(price * 0.9)
: price >= 100000 ? Math.floor(price * 0.95) : Math.floor(price * 1)
}
중첩된 삼항연산자를 줄을 바꿔 가독성을 올려주었다
그래도 삼항연산자는 중첩해서 사용하는 건 지양할 것 같다
const discounts = [
[500000, 20],
[300000, 10],
[100000, 5],
] // 이차원 배열을 만든다
const solution = (price) => {
for (const discount of discounts) // 이차원배열 안에 요소들을 하나씩 다른 변수에 담아 반복
if (price >= discount[0]){
return Math.floor(price - price * discount[1] / 100)
}
return price
}
// for(let i = 0 ; i < arr_discount.length ; i++)
// if(arr_discount[i][0] <= price){
// return Math.trunc(price * (1-arr_discount[i][1]))
// }
이차원 배열과 for of 문을 통해서 반복하였다 ( for문을 통한 반복은 주석으로 첨부)
배열도 가로로 써도 문제는 없는데 세로로 알아보기 쉽게 처리 한 부분도 마음에 들었다
'오늘 뭐했냐 > 기억하면 좋을 문제들' 카테고리의 다른 글
| 문자열 뒤집기 - 스프레드 문법, .reverse(), .join() (0) | 2023.05.27 |
|---|---|
| 제곱 수 판별하기 (0) | 2023.05.26 |
| 아이스 아메리카노(구매 가능 수와 잔돈 계산) (0) | 2023.05.26 |
| 사분면 위치 구하기 (구조분해할당) (0) | 2023.05.26 |
| 2주차 숙제 (0) | 2023.05.25 |