[백준] 11720번 - 숫자의 합 구하기(JAVA)

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

 

 

문제

 

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

 

 

입력

 

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

 

 

출력

 

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

 

 

 

소스코드

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());
        int sum = 0;
        String str = br.readLine();

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

 

  • 입출력 최적화

Scanner는 입력할 때마다 필요한 자료형으로 변환하는 과정을 거치므로 성능 저하

BufferedReader는 입력을 버퍼에 저장한 후 데이터를 한 번에 읽어 오는 방식으로 성능 향상

import java.io.*;

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

 

System.out.print는 출력이 발생할 때마다 버퍼를 비우는 작업이 이뤄지므로 성능 저하

BufferedReader는 출력할 데이터를 먼저 버퍼에 저장한 후 한 번에 출력하는 방식으로 성능 향상

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int a = Integer.parseInt(br.readLine());
        bw.write(String.valueOf(a));
        bw.flush();
    }
}

 

  • 문자형 -> 정수형 변환

문자열로 입력받는 경우, 우선 반복문에서 charAt() 함수를 사용하여 char형으로 변환한다.

아스키 코드에서 같은 의미의 문자와 숫자의 코드 값 차이는 48이다.

문자값 - 48 또는 문자값 - '0'을 사용하여 정수형으로 변환할 수 있다.

int sum = 0;
String str = br.readLine();

for (int i = 0; i < str.length; i++) {
    sum += str.charAt(i) - '0';
}

 

  • String형 <-> 숫자형(int, long, float, double, short) 변환

String형을 숫자형으로 변환할 때는 숫자형Wrapper클래스.parse숫자형() 또는 숫자형Wrapper클래스.valueOf()를 사용하면 된다.

숫자형을 String형으로 변환할 때는 String.toString() 또는 String.valueOf()를 사용하면 된다.

String s = "123";
int s1 = Integer.parseInt(s);
int s2 = Integer.valueOf(s);

int i = 123;
String i2 = String.toString(i);
String i1 = String.valueOf(i);

 

'알고리즘' 카테고리의 다른 글

[백준] 1546번 - 평균 구하기(JAVA)  (0) 2025.09.30
[백준] 2750번 - 수 정렬하기(JAVA)  (0) 2025.09.29