본문 바로가기
Java/알고리즘

원금이 두배가 돼 두 두배 두배

by 티코딩 2022. 11. 19.

double 타입의 interestRate를 입력받고 두배가 되는 시간(년)을 구한다.

for문으로 비비다가 결국 못하고 레퍼런스를 봤다.

 

내가 작성한 코드

public int computeWhenDouble(double interestRate){
    double won = 1.0;
    int year = 0;
    double interest = interestRate / 100;
    for (int i = 0; won >= 2.0; i++) {
        won = won + (won * interest);
        year = i;
    }
    return year;
}

레퍼를 참고한 코드

public int computeWhenDouble(double interestRate){
    double won = 1;
    double interest = 1 + interestRate / 100;
    int year = 0;
    while(won < 2){
        won = won * interest;
        year++;
    }
    return year;
}

while문을 사용해 간단히 했다. 내가 작성한 코드는 year이 계속 0으로 갔다. 왤까?

레퍼코드를 for문으로 바꿔봤다.

 
public int computeWhenDouble(double interestRate){
    double won = 1;
    double interest = 1 + interestRate / 100;
    for(int year = 0; won < 2; year++){
        won *= interest;
    }
    return year;
}

이래도 오류가뜬다. return year; 에서 cannot find symbol이 뜬다. 아 대체 뭐가 문젤까? 답답허다

문제에서 while문을 사용하라고도 안했는데..왜지? 이래서 인텔리제이에서 한번해봤다.

public int computeWhenDouble(double interestRate) {
    double won = 1;
    double interest = 1 + interestRate / 100;
    int year;
    for (year = 0; won < 2; year++) {
        won *= interest;
    }
    return year;
}

하.

이러니 됐다.

int year;를 먼저 선언해주고, 그다음에 for문을 진행 했더니 됐다. 허무하다. 역시 인텔리제이 짱.

그리고 문제를 내가 이해를 못했던것 같다. won >=2.0 이 아니라 won <2였다. 원금이 두배 이상이 되는 시점이라고 해서 그렇게 했는데...

이해력이 딸리나보다..