양꼬치
문제 설명
머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다.
양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다.
정수 n
과 k
가 매개변수로 주어졌을 때, 양꼬치 n
인분과 음료수 k
개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.
제한 사항
- 0 <
n
< 1,000 - n / 10 ≤
k
< 1,000 - 서비스로 받은 음료수는 모두 마십니다.
입출력 예
n | k | result |
---|---|---|
10 | 3 | 124,000 |
64 | 6 | 768,000 |
입출력 예 설명
입출력 예 #1
- 10인분을 시켜 서비스로 음료수를 하나 받아 총 10 * 12000 + 3 * 2000 - 1 * 2000 = 124,000원입니다.
입출력 예 #2
- 64인분을 시켜 서비스로 음료수를 6개 받아 총 64 * 12000 + 6 * 2000 - 6 * 2000 =768,000원입니다.
문제풀이 (나)
function solution(n, k) {
return payment(n, excludeServiceDrinks(n, k));
}
function excludeServiceDrinks(n, k) {
return k - Math.floor(n / 10);
}
function payment(n, k) {
return n * 12_000 + k * 2_000;
}
이번 풀이는 사실 코테라는 목적보다는 유지보수를 생각하며 풀었다.
기능은 크게 두 가지로 나눌 수 있다.
- 양꼬치를 10개 샀을 때 서비스 음료수 1개 -
excludeServiceDrinks
- 양꼬치와 음료수를 계산 -
payment
그런데 이번 문제의 경우 제한사항에 서비스로 받은 음료수는 모두 마신다.
라고 되어 있었다.
그래서 예외처리를 따로 하지 않았는데 실 서비스에서 사용한다고 하면, 이 부분은 예외처리가 필요할 것 같다.
추가로, ES2021 에서 추가된 숫자 구분자 기능을 통해 숫자 리터럴의 가독성을 향상시켰다.
문제풀이 (다른사람)
function solution(n, k) {
k-=~~(n/10);
if (k < 0) k = 0;
return n*12000+k*2000;
}
틸트 문법을 사용했다.
~
처럼 물결표가 하나 있을 경우는 bit 반전 처럼 사용할 수 있다.
~~
처럼 물결표가 두 개 있을 경우는 연산자로 사용되는데, Math.floor() 즉 소수점 버림 함수와 동일하게 사용된다.