트랙
/
JavaScript
JavaScript
/
연습 문제
/
프리랜서 요율
프리랜서 요율

프리랜서 요율

학습 연습 문제

소개

숫자

많은 프로그래밍 언어에는 서로 다른 종류의 숫자를 나타내기 위한 전용 숫자 타입이 있지만, JavaScript에는 딱 두 가지밖에 없어요:

  • number: 배정밀도 64비트 부동소수점 형식(IEEE 754)의 숫자 데이터 타입이에요. 예를 들어 -6, -2.4, 0, 0.1, 1, 3.14, 16.984025, 25, 976, 1024.0, 500000 등이 있어요.
  • bigint: 임의 정밀도 형식으로 _정수_를 나타낼 수 있는 숫자 데이터 타입이에요. 예를 들어 -12n, 0n, 4n, 9007199254740991n 등이 있어요.

임의 정밀도가 필요하거나 아주 큰 숫자를 다뤄야 한다면 bigint 타입을 사용해요. 그렇지 않다면 number 타입이 더 나은 선택일 거예요.

반올림

Math라는 내장 전역 객체가 있고, 여기에는 여러 가지 반올림 함수가 있어요. 예를 들어 소수를 가장 가까운 정수로 내림(floor)하거나 올림(ceil)할 수 있어요.

Math.floor(234.34); // => 234
Math.ceil(234.34); // => 235

산술 연산자

JavaScript는 숫자에 대한 기본적인 산술 연산을 위해 6가지 연산자를 제공해요.

  • +: 덧셈 연산자는 숫자의 합을 구할 때 사용해요.
  • -: 뺄셈 연산자는 두 숫자의 차를 구할 때 사용해요.
  • *: 곱셈 연산자는 두 숫자의 곱을 구할 때 사용해요.
  • /: 나눗셈 연산자는 두 숫자를 나눌 때 사용해요.
2 - 1.5; //=> 0.5
19 / 2; //=> 9.5
  • %: 나머지 연산자는 나눗셈을 한 나머지를 구할 때 사용해요.

    40 % 4; // => 0
    -11 % 4; // => -3
    
  • **: 거듭제곱 연산자는 숫자를 거듭제곱할 때 사용해요.

    4 ** 3; // => 64
    4 ** 1 / 2; // => 2
    

연산 순서

한 줄에서 여러 연산자를 사용할 때, JavaScript는 이 우선순위 표에 나온 것처럼 연산 우선순위를 따라요. 우리가 다루는 범위로 간단히 말하자면, JavaScript는 초등학교 수학 시간에 배운 PEDMAS(괄호, 거듭제곱, 나눗셈/곱셈, 덧셈/뺄셈) 규칙을 사용해요.

const result = 3 ** 3 + 9 * 4 / (3 - 1);
// => 3 ** 3 + 9 * 4/2
// => 27 + 9 * 4/2
// => 27 + 18
// => 45

단축 대입 연산자

단축 대입 연산자는 변수에 산술 연산을 하고, 그 결과 값을 같은 변수에 대입하는 코드를 더 짧게 쓰는 방법이에요. 예를 들어 두 변수 x와 y가 있다고 해봐요. 그러면 x += y는 x = x + y와 같아요. 흔히 y라는 변수 대신 숫자와 함께 사용해요. 나머지 5가지 연산도 비슷한 방식으로 할 수 있어요.

let x = 5;
x += 25; // x is now 30

let y = 31;
y %= 3; // y is now 1

지침

이 연습 문제에서는 프리랜서가 고객과 특정 프로젝트의 가격에 대해 소통할 수 있도록 돕는 코드를 작성해요. 고객의 비용을 빠르게 계산할 수 있는 몇 가지 유틸리티 함수를 작성할 거예요.

Note

ratePerHour 변수와 dayRate 함수는 돈과 관련이 있어요. 측정 단위는 단위 시간당 금액이에요. 즉, 각각 시간당 금액과 일당 금액이에요.

1. 시급으로 일당 계산하기

한 고객이 프리랜서에게 연락해 요금을 문의해요. 프리랜서는 하루에 8시간을 일한다고 설명해요. 하지만 프리랜서는 프로젝트의 시급만 알고 있어요. 시급을 바탕으로 일당을 추정하도록 도와주세요.

dayRate(89);
// => 712

일당은 반올림하거나 "고정된" 정밀도로 바꿀 필요가 없어요.

2. 고정 예산으로 근무일 수 계산하기

또 다른 날, 한 프로젝트 매니저가 프리랜서에게 고정 예산이 있는 프로젝트를 제안해요. 고정 예산과 프리랜서의 시급이 주어졌을 때, 예산이 모두 소진될 때까지 일하게 될 일수를 계산하도록 도와주세요. 결과는 반드시 가장 가까운 정수로 내림해야 해요.

daysInBudget(20000, 89);
// => 28

3. 대규모 프로젝트의 할인 요금 계산하기

프리랜서의 고객들은 여러 달에 걸친 프로젝트를 맡기는 경우가 많아요. 이런 경우 프리랜서는 꽉 찬 한 달마다 할인을 제공하기로 하고, 남은 날은 일당으로 청구해요. 프리랜서는 워라밸이 훌륭해서 달력상 한 달에 22일만 일해요. 그래서 모든 달에는 청구 가능한 날이 22일이에요. 시급, 프로젝트에 포함된 청구 가능한 일수, 월 할인율이 주어졌을 때, 이런 프로젝트의 비용을 추정하도록 도와주세요. 할인율은 항상 숫자로 전달되며, 42%는 0.42가 돼요. 결과는 반드시 가장 가까운 정수로 올림해야 해요.

priceWithMonthlyDiscount(89, 230, 0.42);
// => 97972
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
JavaScript Exercism

프리랜서 요율 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 JavaScript 트랙을 개념 37개연습 문제 159개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.