알고리즘

[백준] 입출력 - 11720번(서칭), 숫자의 합.

hatch 2023. 1. 18. 23:23
728x90
반응형

* 공부 목표

입출력 - 2557, 1000, 2558, 1095010951, 10952, 1095311021, 11022, 11718, 11719, 11720, 11721, 2741, 2742, 2739, 1924, 8393, 10818, 2438, 2439, 2440, 2441, 2442, 2445, 2522, 2446, 10991, 10992

 

  • 11720번

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

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

 

** <공백 없이> 쓰여졌다. = 문자열로 입력받아야 한다.

1. 숫자의 개수는 int 자료형으로 받고, 연산할 수는 String 자료형으로 받는다.

2. 그리고 String자료형으로 받은 값을 <연산>하기 위하여 charAt(); 메소드를 활용한다.

3. for문을 통해, 입력받은 문자열의 첫번째 원소(charAt(0))부터 마지막까지 누적합을 구한다.

 

* charAt(인덱스);

- 문장 중에 인덱스 위치에 해당하는 char 추출.

- '0'(아스키코드 : 48)을 빼면서 값의 차이를 통해 숫자를 알 수 있음.

(ex. arr[0] = '1'(아스키: 49) / arr[1] = '2'(아스키코드: 50) ... 이 들어감.)

 

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		String a = sc.next();
		sc.close();
		
		int sum = 0;
		for(int i=0; i<N; i++) {
			sum += a.charAt(i) -'0';
		}
		System.out.print(sum);
    }
}

 

▶ 이번 문제를 풀며 느낀 점.

charAt() 메소드를 몰라서 찾아봤는데, 다양한 풀이가 있었음.

특히 입출력 관련해서 BufferedReader을 쓰는 풀이가 자주 보임.

다음 문제부터는 BufferedReader를 시도해봐야 겠다고 생각.