상세 컨텐츠

본문 제목

JAVA. 백준 알고리즘 단계별 문제 7단계(문제 번호 11720)

공-부/백준 알고리즘

by 사랑짱 2021. 5. 31. 18:09

본문

(문제 번호 11720)

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

 

문제 해결 포인트

두번째 줄에 공백없이 입력 받은 숫자의 합을 출력해야 한다.

공백없이 입력 받은 숫자를 나누는 방법은 여러 가지가 있다.

첫번째, String 타입으로 입력받아 substring() 이용

두번째, String 타입으로 입력받아 charAt() 이용         

(단, 아스키코드 값이므로 -48 또는 '0'을 해줘야 함)

세번째, BufferedReader 로 입력받아 getBytes() 을 이용

이번 문제에서는 BufferedReader를 사용하여 문제를 해결해보자.

 

 

문제 해결 과정
1. BufferedReader를 이용해 숫자의 개수와 공백없는 숫자를 입력 받는다.

2. 공백없이 받은 숫자를 getBytes() 이용하여 byte[ ] 배열에 바이트코드로 저장한다.

3. 향상된 for문을 이용하여 byte[ ] 배열의 합을 구한다.

   (이때, byte[ ] 배열에는 바이트코드 인코딩되어있으므로 '0'을 빼줘야 한다.)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;


public class No02 {


    public static void main(String[] args) throws IOException {        
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        bf.readLine();
        
        int sum = 0;
 
        for(byte value : bf.readLine().getBytes()) {
            sum += (value - '0'); 
       } //for      
        System.out.println(sum);        

   } //main

} //class
cs

 

 



개념정리

 

◆ BufferedReader 이란?

-  Enter만 경계로 인식, 받은 데이터가 String으로 고정.

- 많은 양의 데이터를 입력받을경우 Scanner보다 BufferedReader로 입력받는 것이 효율적

 

◆ getBytes( ) 란?

- 유니코드 문자열을 바이트코드로 인코딩 해주는 메소드

- getBytes( )의 인자로 캐릭터셋을 넘기지 않으면 디폴트 charset으로 코딩

- 문자열을 byte[] 배열로 바꾸는 메소드

Q. 언제 사용할까?
A. 한글로 된 정보를 DB 테이블의 charset으로 변경하여 저장해야 정보 손실이 안된다.

 

 

관련글 더보기