tjtjdgur34   7년 전

몇몇 문제에서 배열을 선언해줄 때, 자료형을 int로 할 경우 오답이 되더라구요....

이번 문제도 자료형을 int에서 long으로 바꾸니깐... 풀리네요... 혹시 이유를 아시는 분 계신가요?

alice   7년 전

피보나치 수열은 항의 번호가 커질수록 숫자가 엄청나게 커집니다.


이에 따라 n이 47이상이 되면 int형이 표현할 수 있는 값의 최대 범위를 넘게 됩니다.

tjtjdgur34   7년 전

@alice  혹시 그러면 문제를 풀 경우에, int형과 long형 중 어느 것을 이용할지 선택하는 방법이 있는건가요? 아니면 매번 '이 정도면 숫자가 엄청나게 커질거야' 하고 어림잡아서 선택해야하나요?

alice   7년 전

일반적으로 문제마다 입력값의 범위가 명시되어 있습니다.

이 문제에서도 N(1≤N≤90) 이라고 써져 있습니다.


디버깅해볼 때는 우선으로 입력해볼 것이 N의 범위의 최소값, 최대값입니다.

만약 최대값을 입력했을 때 비정상적인 값이 출력될 경우, 이는 자료형에 문제가 있음을 알 수 있습니다.


문제를 많이 풀어본 경험이 있다면 tjtjdgur34님이 말씀하신 후자의 방법으로 어느 정도 가능합니다만,

되도록이면 제가 말한 방식으로 검증해보는 것이 좋습니다.

tjtjdgur34   7년 전

@alice 답변 감사드립니다!! 좋은 하루되세요!

@alice 기본적인 내용인데 간과하고 문제풀이를 하고 있었습니다 ㅠㅠ

감사합니다!

댓글을 작성하려면 로그인해야 합니다.