ygs3004   1년 전

주어진 숫자 N크기의 배열의 구간합을 M으로 나눴을때 나머지가 0이되는 경우의 수를 구하는 문제입니다.

책으로 공부하고 풀고, 구글링해서 다른분들 것도 보았습니다. 변수명,정수의 타입(저는 int지만 다른분은 long) 말고는

다른 부분을 못 찾겠는데 제꺼는 ArrayIndexOutofBounds가 나오더라고요. 

잘못된 부분 찾다찾다 못찾아서 질문올립니다. ㅠㅠ

jkrite   1년 전

sum[i] 에 더하는 과정에서 int범위를 넘어가는 경우가 있을 겁니다.

저는 long sum 이라는 변수에 더해주고

그 나머지를 구해서

sum += Integer.parseInt(st.nextToken());
sum %= M;
remain[(int) sum]++;

이런식으로 하면 index가 터지지않을겁니다

ygs3004   1년 전

감사합니다 long으로 바꾸니 됩니다. test case 범위가 커서 정수타입이 int 범위를 훨씬 넘어서는게 문제였습니다..

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