728x90

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

 

11720번: 숫자의 합

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

www.acmicpc.net

문제

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

 

풀이

N개의 숫자의 합을 구하는 문제이다.

하지만 입력되는 방식이 다른 문제들과 달라서 int형으로 입력받을 경우, int의 범위를 초과하여 입력받는 것이 불가능하다.

따라서 입력되는 수를 문자열로 받고, 문자열을 잘라 int형으로 변환한 후 합을 구해야 한다.

필자는 이 과정을 한 번에 해결해주는 charAt() 메서드를 사용하였다.

 

여기서 주의해야 할 점이 하나 있다.

charAt() 메서드를 이용하여 문자였던 0 ~ 9를 int 형으로 변환하게 될 경우, 0 ~ 9의 아스키코드값으로 변환이 되는데, 이 값은 각각 48 ~ 57에 해당한다.

 

따라서 아래 코드처럼 작성하면 제대로 된 합을 구할 수 없다.(sum : 숫자들의 합, num : 입력받은 문자열, i : 반복문 내 변수)

sum += num.charAt(i);

그렇기 때문에 아래 코드 중 한 가지 방법을 사용하여 합을 구해야 한다.('0' : 문자열 0, 연산을 할 시 48로 계산이 된다.

sum += num.charAt(i) - '0';
sum += num.charAt(i) - 48;

 

코드

BufferedReader 클래스를 이용한 코드

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());
        String num = br.readLine();

        int sum = 0;

        for(int i = 0; i < N; i++) {
            sum += num.charAt(i) - '0';
        }
        System.out.println(sum);
    }
}

 

틀린 부분이 있다면 정정해주시면 감사하겠습니다.
궁금한 부분이 있거나, 다른 아이디어가 있으시면 자유롭게 댓글 남겨주세요!

728x90

+ Recent posts