백준 - 15596번: 정수 N개의 합
정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오.
실행결과 예시
정수를 입력하시오 : 19
정수를 입력하시오 : 23
정수를 입력하시오 : 41
정수를 입력하시오 : 2
85
long sum(int[] a);
a
: 합을 구해야 하는 정수 n개가 저장되어 있는 배열(0 ≤ a[i] ≤ 1,000,000
1 ≤ n ≤ 3,000,000)
a
에 포함되어 있는 정수 n개의 합// 15596번 함수 - 정수 n개의 합
import java.util.Scanner;
public class IntNSum {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
System.out.print("구할 정수의 갯수를 입력하시오 : "); //정수의 갯수 입력
int n = scan.nextInt();
int a[] = new int[n]; //정수를 입력받을 배열 선언
for ( int i = 0; i < n; i++ ) { //각 배열에 정수 입력
System.out.print("정수를 입력하시오 : ");
a[i] = scan.nextInt();
}
int sum = sum(a); // [] 표시는 생성할 때 사용, 호출할 때는 배열변수만 사용
System.out.println(sum);
}
static int sum(int[] a) {
int sum = 0;
for ( int i = 0; i < a.length; i++ ) { // a배열의 크기만큼 반복한다.
sum += a[i];
}
return sum;
}
}
import java.util.Scanner;
public class IntNSum {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
System.out.print("구할 정수의 갯수를 입력하시오 : "); //정수의 갯수 입력
int n = scan.nextInt();
Scanner
를 사용하여 앞으로 내가 구할 정수의 갯수를 n
에 입력받는다.
int a[] = new int[n]; //정수를 입력받을 배열 선언
for ( int i = 0; i < n; i++ ) { //각 배열에 정수 입력
System.out.print("정수를 입력하시오 : ");
a[i] = scan.nextInt();
}
int a[] = new int[n];
와 같이 a 배열
을 선언해준다. 여기서 n
은 앞에서 입력받은 정수의 갯수이기 때문에 배열의 크기와 동일하다. 따라서 a
배열의 크기부분에 넣어준 것이다.
for문
을 이용하여 각 배열 공간에 정수를 입력한다.
배열 요솟값은 0
부터 시작하기 때문에 i
의 초깃값을 0
으로 잡아준다.
배열 요솟값의 최대는 배열의 크기-1
이기 때문에 i < n
와 같이 =
를 넣어주지 않는다. 다르게 하고 싶다면 i <= n-1
로도 바꿀 수 있다.
주어진 배열의 공간만큼 정수를 입력한 뒤 i == n
이 되면 for문
을 빠져나간다.
프로그램이 돌아가는 순서대로 풀이하겠다.
static int sum(int[] a) {
int sum = 0;
for ( int i = 0; i < a.length; i++ ) { // a배열의 크기만큼 반복한다.
sum += a[i];
}
return sum;
}
}
static
은 정적 메서드
이다.
int
는 return값의 타입
이다.
sum
은 메서드명
이다.
(int[] a)
은 main 메서드
에서 가져온 값을 넣은 매개변수
이다. 이제 main 메서드
에서 사용했던 값을 sum 메서드
에서도 사용할 수 있다.
모든 정수의 합계를 나타내는 sum
을 초기화한다. 초기화를 해주지 않으면 sum += a[i];
에서 sum
에 있는 쓰레기 값과 더해져 에러가 날 수 있다.
for문
을 이용해 각 배열에 저장된 값들의 합계를 구한다.
배열 요솟값을 나타내는 i
를 0
으로 초기화시켜준다.
배열 요솟값이 a.length
, 즉 a의 배열 크기
보다 작을 때까지 반복한다.
여기서 .length
는 배열의 크기를 구하는 것이다.
sum
을 누적 연산자를 사용해 모든 배열의 값을 합한다.
구한 sum
값은 return
을 사용하여 main 메서드
로 반환시킨다.
int sum = sum(a); // [] 표시는 생성할 때 사용, 호출할 때는 배열변수만 사용
System.out.println(sum);
}
위에서 만든 sum
함수를 호출한 뒤, sum
함수에서 연산을 다 수행한 후 return
되는 값이 다시 sum(a);
으로 온다.
다시 말해 int sum = sum(a);
은 int sum = sum(sum함수에서 구한 모든 정수의 합계);
와 같다고 생각하면 된다는 것이다.
그렇게 구한 sum
을 출력하여 모든 정수의 합계를 출력한다.
구할 정수의 갯수를 입력하시오 : 12
정수를 입력하시오 : 1
정수를 입력하시오 : 2
정수를 입력하시오 : 3
정수를 입력하시오 : 4
정수를 입력하시오 : 5
정수를 입력하시오 : 6
정수를 입력하시오 : 7
정수를 입력하시오 : 7
정수를 입력하시오 : 8
정수를 입력하시오 : 9
정수를 입력하시오 : 0
정수를 입력하시오 : 1
53