본문 바로가기

자료구조알고리즘/코드스테이츠 Coplit

02_computeWhenDouble

[ 문제 ]

입출력 예시로 문제를 설명하자면, 7%의 연이율로 원금이 2배 이상이 될 때까지 걸리는 시간인 11년이 return된다.

예를 들어, 원금이 1원이고 연이율이 100%라고 해보자.(안다, 말도 안되는 이야기인걸..)

그럼 1년이 지나면 1원이었던 원금이 1+(1x100x0.01 원금x연이율x0.01)=1+1=2가 된다.

즉, 원래 원금이었던 1의 2배인 2가 된다.

그러므로 원금이 2배 이상이 될때까지 걸린 시간인 1이 return이 되는 것이다.

 

[ 풀이 ]

1/ 먼저 원금을 capital이라는 변수로 선언한다.

2/ 1년 후 : capital + capital * interestRate * 0.01 = capital(1+1*interestRate*0.01)^1

3/ 2년 후 : capital(1+1*interestRate*0.01) + capital(1+1*interestRate*0.01)*interestRate*0.01 = capital(1+1*interestRate*0.01)(1+1*interestRate*0.01) = 

capital(1+1*interestRate*0.01)^2

4/ 3년 후 : capital(1+1*interestRate*0.01)^3

...

5/ 반복문을 사용하여 원금이 2배 이상이 될때까지 변수 n을 1씩 증가시킨다.

6/ 원금이 2배 이상이 되면 n값을 return한다.

 

function computeWhenDouble(interestRate) {
  let n = 0; //원금이 2배 이상이 될때까지 걸리는 햇수
  let capital = 1; //원금. 계산하기 쉽게 원금을 1로 두었다.
  while(capital < 2){ //capital이 2미만이면 반복문이 계속 진행된다.
    capital = capital*(1+0.01*interestRate); //원래 있던 capital에서 이자를 더한다.
    n = n+1; //반복문이 진행될때마다 n은 1씩 증가한다.
  }
  return n; //반복문이 종료되면(즉, 원금이 2배 이상이 되면) n값을 반환한다.
}

 

** 여기서 주목해야 할 점은, 반복문을 while문으로 사용할 것인가, for문으로 사용할 것인가!이다.

while문을 for문으로 바꿀 수도 있고, for문을 while문으로 바꿀 수도 있지만

이 두 반복문의 차이점은

몇번 반복해야 하는지 모르는 경우에는 while문 사용한다는 것.

위 코드를 보면 capital이 2 미만일 경우에는 계속해서 반복을 하도록 만들었지만, 실제 몇번을 반복하는지는 알 수가 없다.

하지만 for문을 사용한다면 몇번을 반복할지 초기화와 증감문을 통해 명확하게 적어줘야한다. 

 

 

[ 레퍼런스 ]

레퍼런스는 내가 적은 1+0.01*interestRate를 먼저 rate라는 변수에 할당을 하고 코드를 작성하였다.

오... 이런 방법이 있었구나!

그 외에는 변수명만 조금씩 다르고 거의 흡사한 것 같다.

'자료구조알고리즘 > 코드스테이츠 Coplit' 카테고리의 다른 글

06_letterCapitalize  (0) 2022.02.09
05_firstReverse  (0) 2022.02.09
04_firstCharacter  (0) 2022.02.07
03_powerOfTwo  (0) 2022.02.05
01_transformFirstAndLast  (0) 2022.02.02