[Java] 메서드를 이용하여 입력받은 모든 정수의 합계를 구하기

Haeun Noh·2022년 8월 26일
0

JAVA_예제

목록 보기
18/23
post-thumbnail

0827


문제

백준 - 15596번: 정수 N개의 합

정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오.

실행결과 예시

정수를 입력하시오 : 19
정수를 입력하시오 : 23
정수를 입력하시오 : 41
정수를 입력하시오 : 2
85

문제 조건

  • 사용할 함수명 : long sum(int[] a);
  • 클래스 이름 : Test
  • 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정적 메서드이다.
intreturn값의 타입이다.
sum메서드명이다.
(int[] a)main 메서드에서 가져온 값을 넣은 매개변수이다. 이제 main 메서드에서 사용했던 값을 sum 메서드에서도 사용할 수 있다.
모든 정수의 합계를 나타내는 sum을 초기화한다. 초기화를 해주지 않으면 sum += a[i];에서 sum에 있는 쓰레기 값과 더해져 에러가 날 수 있다.

for문을 이용해 각 배열에 저장된 값들의 합계를 구한다.
배열 요솟값을 나타내는 i0으로 초기화시켜준다.
배열 요솟값이 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


profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글