[★1][백준15596번]정수 N개의 합 (JAVA) + 활용법까지
카테고리: BKJN
태그: Algorithm Java Coding Test
[★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개의 합
- C, C11, C (Clang), C11 (Clang): long long sum(int *a, int n);
- 정수 n개가 주어졌을 때, 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
이다. for
와While
로 구현할 수 있는데 먼저 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));
}
// 함수활용 구현부 끝
}
댓글 남기기