[★1][백준15596번]정수 N개의 합 (JAVA) + 활용법까지

Date:     Updated:

카테고리:

태그:

[★1][백준15596번]정수 N개의 합 (JAVA)

15596번 문제 ☞ https://www.acmicpc.net/problem/15596

난이도 ☞ [★1]

정수 N개의 합

  • 문제
    • 정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오.
      작성해야 하는 함수는 다음과 같다.
      • C, C11, C (Clang), C11 (Clang): long long sum(int *a, int n);
        • a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
        • n: 합을 구해야 하는 정수의 개수
      • C++, C++11, C++14, C++17, C++ (Clang), C++11 (Clang), C++14 (Clang), C++17 (Clang): long long sum(std::vector &a);
        • a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
        • 리턴값: a에 포함되어 있는 정수 n개의 합
      • Python 2, Python 3, PyPy, PyPy3: def solve(a: list) -> int
        • a: 합을 구해야 하는 정수 n개가 저장되어 있는 리스트 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
        • 리턴값: a에 포함되어 있는 정수 n개의 합 (정수)
      • Java: long sum(int[] a); (클래스 이름: Test)
        • a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
        • 리턴값: a에 포함되어 있는 정수 n개의 합
      • Go: sum(a []int) int
        • a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
        • 리턴값: a에 포함되어 있는 정수 n개의 합

내가 푼 풀이

이번 문제는 public static void main(String[] args)을 구현하는 것이 아닌 함수만 구하는 문제이다. 위의 문제에서 우리가 봐야할 것은 Java부분이다.

- 정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오.<br>작성해야 하는 함수는 다음과 같다.
	- Java: long sum(int[] a); (클래스 이름: Test)
	      - a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
	      - 리턴값: a에 포함되어 있는 정수 n개의 합

클래스 이름은 Test라고 되어있다. 넘어오는 인자 a를 모두 더하여 리턴하면 된다. 클래스 이름은 Test라고 하니 아래와 같이 작성하면 된다.

class Test {

}

그리고 return되는 타입은 Long이다. forWhile로 구현할 수 있는데 먼저 for를 이용한 함수 코드는 아래와 같다.

[ 풀이 1 ]

메모리 : 423000KB
시간 : 32ms

for

class Test {
    long sum(int[] a) {
		long sum = 0;	// 정수 배열 합계 변수
        
		for(int i = 0; i < a.length; i++) {
			sum += a[i];
		}
		return sum;
	}
}

입력받는 함수의 값이 몇개인지 알 수 없으니 i < a.length;로 해주어야한다.

[ 풀이 2 ]

메모리 : 422828KB
시간 : 24ms

While

public class NO15596BOJ2 {

	long sum(int[] a) {

		long sum = 0;
		int count = 0;

		while (count < a.length) {
			sum += a[count];
			count++;
		}

		return sum;

	}
}

이렇게 해주면 되는데 for보다는 While이 약간 더 좋은 성능을 보이고 있다. 함수의 활용 부분은 다음과 같다.

[ 함수 활용 ]

함수 + Scanner

import java.util.Scanner;

public class Main {
	// 위에서 정의한 함수 시작
	static long sum(int[] a) {
		long sum = 0;

		for (int i = 0; i < a.length; i++) {
			sum += a[i];
		}
		return sum;
	}
	// 위에서 정의한 함수 끝

	public static void main(String[] args) {
	
		// 함수활용 구현부 시작
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		int[] arr = new int[n];

		for (int i = 0; i < arr.length; i++) {
			arr[i] = s.nextInt();
		}
		System.out.println(sum(arr));
	}
		// 함수활용 구현부 끝
}

BKJN 카테고리 내 다른 글 보러가기

댓글 남기기