본문 바로가기
백준알고리즘

백준알고리즘:p11720 문자열 숫자의 합

by socialcomputer 2021. 2. 23.

분류: 문자열

 

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

입력 출력
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
11
10987654321
입력으로 주어진 숫자 N개의 합을 출력한다.

46

 

코드

//백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨 
import java.util.Scanner;

public class p11720 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int x = Integer.parseInt(sc.nextLine());
		//double y = Double.parseDouble(sc.nextLine());
        //256이상의 숫자는 int로 표현 불가능함->double
        //double로 해도 25자리 돌렸을 때 오류남...
		String[] s = sc.nextLine().split("");
		
		int sum = 0;
		for(int i=0; i<x; i++) {
			int y = Integer.parseInt(s[i]);
			int num = y%10;
			y = y/10;
			
			sum += num;
		}
		System.out.print(sum);
sc.close();
	}

}

 

▶처음에 입력을 int로 받으면 범위를 벗어나서 double로 받았는데 double도 벗어나서

String으로 받고나서 split해 String배열로 저장했다. 

int 는 4바이트(32비트) ±21000000000(21억)

double 은 8바이트(64비트) 4.9E-324 ~ 1.7976931348623157E308

 

▶char타입을 integer.parseInt사용해서 int로 바꿀수 없어서, split("")하여 String배열로 저장했다.

String은 기본 자료형이 아니라 레퍼런스 자료형이다.

또한, 기본자료형 끼리는 바꿀 수 없다. 

 

다른 풀이

s.charAt(index)하거나 getBytes()한 것에

'0'또는 -48해야 됨. 아스키코드값으로 변환되어서 int에 저장되니까..

 


채점결과

 

링크 www.acmicpc.net/status?user_id=ske05058&problem_id=11720&from_mine=1

 

채점 현황

 

www.acmicpc.net

 

댓글