10844번 - 쉬운 계단 수
차이점이 뭔지는 인터넷에서 찾아봐서 개념은 알겠는데...
java로 제출 할 때에 제 코드 마지막이 System.out.println(ans); 이걸로 끝나는데
ans를 선언할 때 int 로 선언하면 채점에서 바로 틀리고
long으로 선언하면 맞았습니다 라고 뜨는데... 왜 이런일이 발생하는지 알고싶습니다!
int는-2147483648 ~ 2147483647의 범위를 표현할 수 있고
long은-9223372036854775808 ~ 9223372036854775807의 훨씬 더 큰 숫자를 표현할 수 있습니다.
int은 32bit으로 구성되어 있고
long은 64bit으로 구성되어 있기 때문입니다.
코드를 보지 않고는 알 수 있는 것은 하나도 없습니다. 항상 코드를 필수적으로 올려주세요.
물론 원인은 중간 계산 과정에서 int 범위를 벗어나는 상황이 있었으니까 그렇다고 예측은 할 수 있습니다.
코드 추가했습니다. 다시한번 확인해주시면 감사하겠습니다
23번째 줄은 (ans에 f[N][i]를 더한 값)을 10억으로 나눈 나머지를 ans에 대입하는 것이 아니고, ans에 (f[N][i]를 10억으로 나눈 나머지)를 더하는 것입니다. 그래서 ans가 int형에 담지 못할 정도로 커질 수 있습니다.
댓글을 작성하려면 로그인해야 합니다.
spide333 5년 전
차이점이 뭔지는 인터넷에서 찾아봐서 개념은 알겠는데...
java로 제출 할 때에 제 코드 마지막이 System.out.println(ans); 이걸로 끝나는데
ans를 선언할 때 int 로 선언하면 채점에서 바로 틀리고
long으로 선언하면 맞았습니다 라고 뜨는데... 왜 이런일이 발생하는지 알고싶습니다!