[백준] 11720번 : 숫자의 합 - JAVA(자바)

Life is ninanino·2022년 10월 25일
0

[백준] JAVA

목록 보기
25/37
post-thumbnail

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


함정이 있다. 예제 입력 3은 25자리를 더한다
여기서 자료형의 범위를 살펴보자면,

엥 근데 long은 19자리까지만 있는디?
배열을 사용해서 풀 수도 있다. 하지만 여긴 문자열 파트이다. 문자열을 활용해보도록 하자

++정답코드

package 백준;// @ author ninaaano

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class b_11720 {
    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;
        for(int i=0; i<n; i++){
            sum += br.read()-'0';
        }
        System.out.println(sum);
    }
}

우선 자릿수를 입력받을 n을 선언해준다.
그 후 read()로 한자리씩 끊어준다.
readLine은 한줄을 읽어들이지만 read는 한자리씩 아스키코드로 읽기때문에
뒤에 '0'이나 48을 빼줘야한다.
sum에 읽은 수를 모조리 더해 준 후 출력해주면 된다.
처음엔 한자리씩 어떻게 끊어야할까 생각을 했는데
다른 풀이를 보니 byte[] 에 넣기도 한다.
역시 풀이법은 다양하다


++참고코드

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;
		
		for(byte value : br.readLine().getBytes()) {
			sum += (value - '0');	// 또는 (a-48)
		}
		
		System.out.print(sum);
		
	}
}

출처 : st-lab
오.. int n을 선언하지 않고도 readLine()만 선언해서 받을 수도 있다
하나 또 배웠다.

profile
백엔드 프로그래밍을 공부하고 있습니다. AWS, 클라우드 환경에 대해 관심이 많습니다.

0개의 댓글