스터디사이트 : https://www.hackerrank.com


JAVA 알고리즘 : 큰 수의 합


자바 코딩을 이용하여 아래와 같이 입력되면 아래와 같이 출력되게 코딩 해 보시오


입력 : Scanner 클래스 이용.  Scanner scan = new Scanner(System.in)

출력 : System.out.println(출력);


입력

입력 배열의 사이즈.

1000000001 1000000002 1000000003 1000000004 1000000005  실제 입력값


출력

5000000015 실제 입력값들의 합




코딩연습-1

- 입력의 기본 클래스인 Scanner 정의

- 입력 배열의 사이즈를 받는 int scansize 정의

- 실제 입력값들을 저장하는 ArrayList values 정의.

- 입력값들의 합을 구하는 int sum 정의.

디버깅을 해본 결과 세번째 값을 더하면서부터 int가 맛이가기 시작한다.

이유는 int 데이터타입 값의 범위가 -2^31 ~ 2^31-1 (-2,147,483,648 ~ 2,147,483,647 ) 밖에 안되기 때문이다.

▶ JAVA 데이터타입 참조 : http://blog.naver.com/imf4/220598144501

아 적어도 결과를 더하는 sum변수에다가는 long을 써야겠구나... 깨닫는다.

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

int scansize = scan.nextInt(); List<Integer> values = new ArrayList<Integer>();


int sum = 0; for(int i=0; i<scansize; i++){

values.add(scan.nextInt()); System.out.println("ArrayList " + i + " : " + values.get(i));

sum = sum + values.get(i);

System.out.println("sum " + i + " : " + sum);

} /* end for */


System.out.println(sum);

}

결과 :

ArrayList 0 : 1000000001
sum 0 : 1000000001
ArrayList 1 : 1000000002
sum 1 : 2000000003
ArrayList 2 : 1000000003
sum 2 : -1294967290
ArrayList 3 : 1000000004
sum 3 : -294967286
ArrayList 4 : 1000000005
sum 4 : 705032719
705032719

 



코딩연습 - 2 & 결과

결과값을 받는 sum을 long sum 으로 정의한 결과 원하는 대로 잘 나온다..

int 데이터타입 값의 범위가 몇인지 상기했던 시간이었다..

int : -2^31 ~ 2^31-1 (-2,147,483,648 ~ 2,147,483,647 )

long : -2^63 ~ 2^63-1

public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int scansize = scan.nextInt();
        List<Integer> values = new ArrayList<Integer>();
       
        long sum = 0;
        for(int i=0; i<scansize; i++){
            values.add(scan.nextInt());
            System.out.println("ArrayList " + i + " : " + values.get(i));
            sum = sum + values.get(i);
            System.out.println("sum " + i + " : " + sum);
        } /* end for */
       
        System.out.println(sum);
}

결과 :

ArrayList 0 : 1000000001
sum 0 : 1000000001
ArrayList 1 : 1000000002
sum 1 : 2000000003
ArrayList 2 : 1000000003
sum 2 : 3000000006
ArrayList 3 : 1000000004
sum 3 : 4000000010
ArrayList 4 : 1000000005
sum 4 : 5000000015
5000000015



+ Recent posts