ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Baekjoon Online Judge] 11720번: 숫자의 합
    문제 풀이/Baekjoon Online Judge 2021. 1. 3. 20:08

    [Baekjoon Online Judge] 11720번: 숫자의 합

     

    11720번: 숫자의 합

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

    www.acmicpc.net

     입력 받은 숫자의 각 자리수를 더하는 문제이다. 정수로 해결하게 된다면 자리수보다 큰 수가 들어올 가능성이 높기 때문에 쉽게 오버플로우가 일어날 수 있다. 그렇기 때문에 String을 활용하여 문제를 해결하였다.

     

     문자열로 입력 받은 즉시 split으로 나누어 문자열 배열로 해결하는 방법과 문자열로 받은 뒤 각각의 자리를 char로 뽑아서 정수형으로 바뀐 뒤 더하는 두가지 방식으로 해결하였다.


    import java.io.*;
    
    public class Baekjoon11720 {
    
        public static void main(String[] args) throws IOException {
    
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
    
            int n = Integer.parseInt(bufferedReader.readLine());
            String[] numbers = bufferedReader.readLine().split("");
    
            int result = 0;
    
            for (String number : numbers) {
                result += Integer.parseInt(number);
            }
    
            bufferedWriter.write(String.valueOf(result));
    
            bufferedWriter.flush();
            bufferedReader.close();
            bufferedWriter.close();
        }
    }

     

     split 메소드를 활용하여 문자열 배열에 저장하였다. 그 다음 문자열 배열의 항목을 탐색하여 정수로 변환 후 결과값 변수에 더해준다. 


    import java.io.*;
    
    public class Baekjoon11720 {
    
        public static void main(String[] args) throws IOException {
    
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
    
            int n = Integer.parseInt(bufferedReader.readLine());
            String number = bufferedReader.readLine();
    
            int result = 0;
            for (int i = 0; i < n; i++) {
                result += Character.getNumericValue(number.charAt(i));
            }
    
            bufferedWriter.write(String.valueOf(result));
    
            bufferedWriter.flush();
            bufferedReader.close();
            bufferedWriter.close();
        }
    }

     

     두 번째 풀이 방식은 문자열로 받은 뒤 각각의 index에 접근하여 result에 더해준다. 여기서 주의할 점은 number.charAt(i)이다. charAt 메소드의 경우 반환 타입이 char이다. 

     

    int a = (int)'1';
    int b = Character.getNumericValue('1');
    
    System.out.println(a); // 49
    System.out.println(b); // 1

     

     char를 int로 변환하는 방식은 여러가지 이다. 두 가지만 소개하자면, 첫 번째 방식은 명시적으로 int 형으로 바꿔주는 것인데, a에 ASCII Code로 1을 의미하는 49를 저장한다. 두 번째 방법은 Character wrapper class의 getNumericValue 메소드를 사용하는 것이다. 이것은 문자의 숫자를 int 숫자 그대로인 1을 저장하는 것을 알 수 있다. 그렇기 때문에 b에 1이란 숫자가 저장된 것을 알 수 있다.

    댓글

Designed by Tistory.