반응형
처음에는 다음과 같이 작성했다. n번째수 n +1 번째 수의 합이 n+2번째 수이므로 x에 n-2번째 수, y에 n-1번째 수를 두고 fi라는 변수에 n번째 수를 출력하도록 했다. 0일경우에는 fi 초기값인 0이 그대로 출력되기때문에 상관없지만 1일 경우에는 for문에서 i < n 조건 때문에 for문으로 진입하지못하고 0이 출력되기때문에 1일 경우만 예외를 두어 fi값을 1로 출력하게 하였다.
여기서 오류가 발생했는데 이유는 문제에서 n은 90보다 작거나 같은 자연수 라는것.
위 코드에 90을 대입하면
다음과 같이 int범위를 초과하여 오버플로우가 발생한다.
이 문제를 해결하기 위해 int형을 모두 long형으로 바꾸면 문제 해결
for문에서 i = 0 으로 하거나 i<=n으로 한다면 n번째 피보나치 수가 아닌 n+1번째의 피보나치 수가 나오게 되어서 i =1, i < n으로 설정했다. for문 안의 구성을 조금 바꾼다면 문제없겠지만 처음 생각한 방법대로 코드를 맞추다 보니
i = 1; i < n 으로 된 것.
반응형
'Java > 백준알고리즘' 카테고리의 다른 글
백준알고리즘 #15596 정수 N개의 합 Java (0) | 2020.12.09 |
---|---|
백준알고리즘 #1929 소수 구하기 java (에라토스테네스의 체) (0) | 2020.12.08 |
백준알고리즘 #11720 숫자의 합 java (0) | 2020.12.07 |
백준알고리즘 #11654 아스키 코드 java (0) | 2020.11.24 |
백준알고리즘 #5086 배수와 약수 java (0) | 2020.11.23 |