2020년 10월 27일 화요일

[Algorithm] 배열합계 ( A Very Big Sum )

 A Very Big Sum


문제] 

n this challenge, you are required to calculate 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):

  • int ar[n]: an array of integers .

Return

  • long: the sum of all array elements

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

Return the integer sum of the elements in the array.

Constraints


Sample Input

5

1000000001 1000000002 1000000003 1000000004 1000000005

Output

5000000015

* 요약 : 문자를 콘솔로 받아서 Long타입 배열에 저장 후 배열인자들의 합을 구한다. 



제출]

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 = 0;
        for(int i=0; i < ar.length; 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 OutputStreamWriter(System.out));

        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();
    }
}



풀이]

- Scanner class : 읽은 바이트를 문자, 정수, 실수, 불린, 문자열 등
다양한 타입으로 변환하여 리턴(java.util.scanner

- System.in : 자바의 표준입력 스트림(키보드)

- scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); :
여러줄을 입력받아야하는 상황에서 엔터도 한줄로 인식하기에 예외처리코드
예를 들어

"
red green blue
[엔터]
japan korea
"
위의 형식으로 입력이 되고 array1 =[ red, green, blue ], array2 = [ japan, korea]
로 저장하려고 할 때, [엔터] 입력 때문에 array2 = [] 가 될 것이다.
참고 : https://dev-kimse9450.tistory.com/17

- aVeryBigSum 함수에선 for문을 이용해 배열인자의 합계를 구한다.


댓글 없음:

댓글 쓰기