본문 바로가기
1 Day 1 Algorithms

[2018.12.14] A Very Big Sum

by 곰돌찌 2018. 12. 14.

Problem


alculate and print the sum of the elements in an array, keeping in mind that some of those integers may be quite large.

Function Description

Complete the aVeryBigSum function in the editor below. It must return the sum of all array elements.

aVeryBigSum has the following parameter(s):

  • ar: an array of integers .

Input Format

The first line of the input consists of an integer 
The next line contains  space-separated integers contained in the array.

Output Format

Print the integer sum of the elements in the array.

Constraints 
 

Sample Input

5
1000000001 1000000002 1000000003 1000000004 1000000005

Output

5000000015

Note:

The range of the 32-bit integer is .

When we add several integer values, the resulting sum might exceed the above range. You might need to use long long int in C/C++ or long data type in Java to store such sums.


How I solved the problem


#1000000001 과 같은 아이들은 integer ( -2147483648 ~ 2147483647 )의 범위를 넘어선다. 이 때는 data type을 long으로 써줘야 값이 제대로 나옴.

#Java에서 long 타입일 때 초기화는 0L로 해주어야함.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
 
public class Solution {
 
    // Complete the aVeryBigSum function below.
    static long aVeryBigSum(long[] ar) {
        long result = 0L;
        int arCount = ar.length;
        
        for (int i = 0; i < arCount; i++) {
            result += ar[i];
        }
 
        return result;
    }
 
    private static final Scanner scanner = new Scanner(System.in);
 
    public static void main(String[] args) throws IOException {
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
 
        int arCount = scanner.nextInt();
        scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
 
        long[] ar = new long[arCount];
 
        String[] arItems = scanner.nextLine().split(" ");
        scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
 
        for (int i = 0; i < arCount; i++) {
            long arItem = Long.parseLong(arItems[i]);
            ar[i] = arItem;
        }
 
        long result = aVeryBigSum(ar);
 
        bufferedWriter.write(String.valueOf(result));
        bufferedWriter.newLine();
 
        bufferedWriter.close();
 
        scanner.close();
    }
}
 
cs


[출처 : https://www.hackerrank.com ]

'1 Day 1 Algorithms' 카테고리의 다른 글

[2018.12.16] Loops  (0) 2018.12.17
[2018.12.15] Class vs. Instance  (0) 2018.12.17
[2018.12.13] Counting Valleys  (0) 2018.12.14
[2018.12.13] Compare the Triplets  (0) 2018.12.14
[2018.12.12] Sock Merchant  (0) 2018.12.14

댓글