간단한 함수식을 만드는 문제였습니다. 좀 헷갈린 부분은 제출 방식이었습니다.
Java 코드
public class Test {
long sum(int[] a) {
long hap = 0;
for (int i = 0; i < a.length; i++) {
hap += a[i];
}
return hap;
}
}
sum 메소드의 long hap = 0; 변수 초기화 부분에서 int로 주게 되면 return값이 int 범위 안에 있다면 자동 형변환이 일어나서 별 문제 없이 실행됩니다.하지만 문제의 조건에서 배열 길이가 3,000,000이고 배열의 각 원소의 최대 크기는 1,000,000이기에 계산을 진행하다 보면 int 범위를 넘는 경우가 발생하기에 long으로 변수 선언을 해줘야합니다.
보시면 int형으로 선언시 int최대 범위인 2147483647을 입력시 제대로 된 값을 보내주지면 여기에 1을 더하면 오버플로우가 되어서 나오는 걸 볼 수 있습니다.
출처 : 백준 15596번 https://www.acmicpc.net/problem/15596