본문 바로가기
Algorithm/Baekjoon

[백준] 11720번 : 숫자의 합 - Java

by unknownomad 2022. 3. 16.

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

 

11720번: 숫자의 합

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

www.acmicpc.net



구현 방법

charAt()

  • 해당 문자의 아스키코드 값 반환
  • 해당 문자 - 48 / 해당 문자 - '0' : 이렇게 해야 입력 받은 값 그대로 사용 가능

 

getBytes()

1. 정의

  • String을 하나의 byte 배열로 변환해주는 메소드

2. 특징

  • java.lang.String 패키지에 있는 메소드 ➡ import문 불필요
  • 해당 문자 - 48 / 해당 문자 - '0' : 이렇게 처리해야 아스키코드값 ➡ 입력 받은 값 그대로 사용 가능

풀이

1. Scanner + charAt()

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
    
        Scanner in = new Scanner(System.in);
        int N = in.nextInt(); //첫 번째 줄 값
        String a = in.next(); //두 번째 줄 값 - 문자열로 입력 받기
        in.close();
		
        int sum = 0;
        for(int i = 0; i < N; i++) {
            //charAt(): 해당 문자의 아스키코드값 반환
            sum += a.charAt(i) - '0'; //= a.charAt(i) - 48
            //- '0' or - 48 : 아스키코드값 ➡ 입력 받은 값으로 변환
        }
        System.out.print(sum);
    }
}

 

2. BufferedReader + getBytes()

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
 
public class Main {
    public static void main(String[] args) throws IOException {		

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        br.readLine(); //N: 입력만 받기
		
        int sum = 0;
        //getBytes(): String을 하나의 byte 배열로 변환해주는 메소드
        for(byte value : br.readLine().getBytes()) {
            sum += (value - '0'); //= (value - 48)
            //- '0' or - 48 : 아스키코드값 ➡ 입력 받은 값으로 변환
        }
        System.out.print(sum);
    }
}

성능

  • BufferedReader > Scanner

 


출처 : https://st-lab.tistory.com/61

댓글