Java/코딩테스트

숫자의 합 구하기

Gamii 2024. 6. 20. 07:56
728x90

백준 온라인 저지 11720번

https://www.acmicpc.net/problem/11720

 

 

 

문제

N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

출력

입력으로 주어진 숫자 N개의 합을 출력한다.

예제 입력 1 

1
1

예제 출력 1 

1

예제 입력 2 

5
54321

예제 출력 2 

15

예제 입력 3 

25
7000000000000000000000000

예제 출력 3 

7

예제 입력 4 

11
10987654321

예제 출력 4 

46

 

 

 

 

 

 

[실패 코드]

package org.example;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int totalCnt = 0;
        int cnt = scanner.nextInt();
        int number = scanner.nextInt();

        String[] strArr = String.valueOf(number).split("");

        for(int i = 0; i < strArr.length; i++){
            int num = Integer.valueOf(strArr[i]);
            totalCnt += num;
        }

        System.out.println(totalCnt);
    }
}

 

 

 

 

[성공 코드]

package org.example;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int totalCnt = 0;
        int cnt = scanner.nextInt();

        //N이 100이하의 자리 수이기 때문에 int, long형으로 받을 수 없다.
        String numberStr = scanner.next();

       char[] cNumArr = numberStr.toCharArray();

        for(int i = 0; i < cNumArr.length; i++){
            //아스키코드로 char형을 int형으로 바꾼다.
            // -'0'을 해도 되고, -48을 해도 된다.
            totalCnt += cNumArr[i] - '0';
        }

        System.out.println(totalCnt);
    }
}

 

 

 

 

 

[참고]

 

String 을 Array 로 변환할 때 효율

알고리즘 테스트 리뷰를 하던중 String 의 index 를 배열로 바꿀 때 어떤 방법이 효율이 좋을지 궁금증이 생겼다.효율성을 테스트하기위해서 System.\*nanoTime\*() 를 이용했다.시간 측정을 원하는 로직

velog.io