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

이자는 흥미로워요

학습 연습 문제

소개

부동소수점 수는 소수점 뒤에 자릿수가 0개 이상인 수예요. 예를 들면 -2.4, 0.1, 3.14, 5., 16.984025, 1024.0 같은 것들이 있어요.

부동소수점 타입마다 소수점 뒤에 저장할 수 있는 자릿수가 달라요. 이 자릿수를 정밀도라고 해요.

Go에는 두 가지 부동소수점 타입이 있어요:

  • float32: 32비트(정밀도 약 6~9자리).
  • float64: 64비트(정밀도 약 15~17자리). 이 타입이 기본 부동소수점 타입이에요.

여기서 알 수 있듯이 두 타입은 저장할 수 있는 자릿수가 서로 달라요. 즉, float32에 원주율을 저장하려고 하면 처음 6~9자리만 저장돼요(마지막 자리는 반올림돼요).

Go는 기본적으로 부동소수점 수에 float64를 사용해요. 다만 다음 경우에는 예외예요:

  1. 타입이 float32인 변수에 할당되는 경우.
  2. 반환 타입이 float32인 함수에서 반환되는 경우.
  3. float32() 함수에 인자로 전달되는 경우.

math package 안에는 유용한 수학 함수가 많이 들어 있어요.

지침

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

  • 잔액이 0달러 미만이면 3.213%예요 (잔액이 더 음수가 돼요).
  • 잔액이 0달러 이상 1000달러 미만이면 0.5%예요.
  • 잔액이 1000달러 이상 5000달러 미만이면 1.621%예요.
  • 잔액이 5000달러 이상이면 2.475%예요.

해야 할 과제는 네 개예요. 각 과제에서는 잔액과 이자율을 다뤄요.

1. 이자율 계산하기

주어진 잔액에 대한 이자율을 계산하는 InterestRate() 함수를 구현해요:

InterestRate(200.75)
// => 0.5

반환되는 값은 float32 타입이에요.

2. 이자 계산하기

주어진 잔액에 대한 이자를 계산하는 Interest() 함수를 구현해요:

Interest(200.75)
// => 1.003750

반환되는 값은 float64 타입이에요.

3. 연간 잔액 업데이트 계산하기

이자율을 고려해서 연간 잔액 업데이트를 계산하는 AnnualBalanceUpdate() 함수를 구현해요:

AnnualBalanceUpdate(200.75)
// => 201.75375

반환되는 값은 float64 타입이에요.

4. 원하는 잔액에 도달하기까지 걸리는 연수 계산하기

매년 이자가 잔액에 더해진다는 점을 고려해서, 원하는 잔액에 도달하는 데 필요한 최소 연수를 계산하는 YearsBeforeDesiredBalance() 함수를 구현해요. 즉, 1년 후 잔액은 시작 잔액 + 시작 잔액에 대한 이자예요. 2년 후 잔액은 1년 후 잔액 + 1년 후 잔액에 대한 이자예요. 이런 식으로, 해당 연도의 잔액이 목표 잔액 이상이 될 때까지 반복해요.

balance := 200.75
targetBalance := 214.88
YearsBeforeDesiredBalance(balance, targetBalance)
// => 14

반환되는 값은 int 타입이에요.

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

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

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