트랙
/
Clojure
Clojure
/
연습 문제
/
이자는 흥미로워요
이자는 흥미로워요

이자는 흥미로워요

학습 연습 문제

소개

부동소수점 수는 소수점 구분 기호 뒤에 자릿수가 0개 이상 있는 수예요. -2.4, 0.1, 3.14, 16.984025, 1024.0 같은 수가 그래요.

부동소수점 타입마다 소수점 구분 기호 뒤에 저장할 수 있는 자릿수가 달라요. 이를 정밀도라고 해요. 그래서 single에 PI를 저장하려고 하면 처음 6~9자리까지만 저장돼요(마지막 자릿수는 반올림돼요).

Clojure에서 부동소수점 수는 Double로 읽어요. M 접미사를 붙이면 BigDecimal로 읽어요.

  • Double: 8바이트(정밀도 약 15~17자리)예요. 가장 흔히 쓰는 타입이에요. 2.45처럼 써요.
  • BigDecimal: 임의 정밀도의 정수 unscaled 값과 32비트 정수 scale로 이루어져 있어요. 2.45M처럼 써요.

지침

이 연습 문제에서는 저축 계좌를 다뤄요. 매년 저축 계좌의 잔액은 이자율에 따라 갱신돼요. 은행이 정해 주는 이자율은 계좌에 들어 있는 금액, 즉 잔액에 따라 달라져요.

  • 잔액이 마이너스일 때는 -3.213%예요.
  • 잔액이 1000달러 미만일 때는 0.5%예요.
  • 잔액이 1000달러 이상 5000달러 미만일 때는 1.621%예요.
  • 잔액이 5000달러 이상일 때는 2.475%예요.

정부는 매년, 저축 계좌의 잔액이 갱신되기 전에, 돈의 일정 비율을 비과세로 자선 단체에 기부할 수 있도록 허용해요. 착한 사람이니까, 연말에 잔액이 양수라면 이 금액의 두 배를 자선 단체에 기부하는데, 1달러 단위로 내림해요.

세 가지 과제가 있고, 각 과제는 잔액과 이자율을 다뤄요.

1. 이자율 계산하기

주어진 잔액을 바탕으로 이자율을 계산하는 interest-rate 함수를 구현해요.

(interest-rate 200.75M)
;;=> 0.5

반환되는 값은 Double이라는 점에 유의해요.

2. 연간 잔액 갱신 계산하기

이자율을 고려해 연간 잔액 갱신액을 계산하는 annual-balance-update 함수를 구현해요.

(annual-balance-update 200.75M)
;;=> 201.75375M

반환되는 값은 BigDecimal이라는 점에 유의해요.

3. 기부할 금액 계산하기

잔액과 정부가 허용하는 비과세 비율을 바탕으로 자선 단체에 기부할 금액을 계산하는 amount-to-donate 함수를 구현해요.

(def balance 550.5M)
(def tax-free-percentage 2.5)

(amount-to-donate balance tax-free-percentage)
;;=> 27

반환되는 값은 int라는 점에 유의해요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Clojure Exercism

이자는 흥미로워요 문제를 시작해 볼 준비가 됐나요?

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