[programmers] 옷가게 할인 받기 - JavaScript
10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20% 할인이 적용됩니다. 주어진 가격에 할인율을 적용하여 지불해야 할 금액을 반환하는 solution 함수를 작성해야 합니다. 기존 작성된 코드에서는 10만 원 이하의 경우에 대한 처리가 없어서 오류가 발생했고, 이를 수정한 코드가 제시되었습니다.
Dec 31, 2023
Contents
기존 작성 코드문제 설명
머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.
구매한 옷의 가격
price
가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.제한사항
- 10 ≤
price
≤ 1,000,000 price
는 10원 단위로(1의 자리가 0) 주어집니다.
- 소수점 이하를 버린 정수를 return합니다.
입출력 예
price | result |
150,000 | 142,500 |
580,000 | 464,000 |
입출력 예 설명
입출력 예 #1
- 150,000원에서 5%를 할인한 142,500원을 return 합니다.
입출력 예 #2
- 580,000원에서 20%를 할인한 464,000원을 return 합니다.
기존 작성 코드
function solution(price) { let answer; if (price >= 500000) { answer = price * 0.8; } else if (price >= 300000) { answer = price * 0.9; } else if (price >= 100000) { answer = price * 0.95; } return Math.floor(answer); }
이렇게 코드를 작성했으나 몇몇 테스트 케이스에서 런타임 오류가 발생했다. 오류가 발생한 이유는 price의 값이 10만원 이하일 경우에 넘겨지는 값이 없기 때문이었다. 이를 인지하고 다음과 같이 코드를 수정했다.
solution.js
function solution(price) { if(price>=500000){ price = price * 0.8; }else if(price>=300000){ price = price * 0.9; }else if(price>=100000){ price = price * 0.95; } return Math.floor(price); }
핵심 키워드
- if 문은 조건이 참일 때 실행된다. 따라서 if 문이 여러 개일 경우 모든 조건을 검사한다.
- if else 문은 앞의 조건이 거짓이고, 해당 조건이 참일 경우 실행된다. 즉 앞의 조건이 참인 경우 실행되지 않는다.
- else 문은 모든 조건이 거짓일 경우 실행된다. if else 문과 같이 앞의 조건들 중 참이 있는 경우 실행되지 않는다.
- 리턴할 값과 디폴트 케이스를 설정하지 않으면 상정하지 않은 인풋이 있을 경우 문제가 발생할 소지가 있다.
결론!
해당 문제를 풀면서 실행 순서, 예상하지 못한 인풋을 다루는 방법을 익힐 수 있었다.
Share article