Java/백준알고리즘

백준알고리즘 #2748 피보나치 수 2 java

Sehyeok20 2020. 12. 7. 19:15
반응형

백준알고리즘 #2748 피보나치 2 문제
오류난 코드

처음에는 다음과 같이 작성했다. 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 으로 된 것.

반응형