[백준] 11720번 숫자의 합

뱅뱅의 텃밭·2022년 5월 30일
0

백준

목록 보기
1/14
post-thumbnail

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

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

출력:
입력으로 주어진 숫자 N개의 합을 출력한다.

제출:

import java.util.Scanner;

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

String -> char -> int 형변환이 중요한 문제였다.
아래는 문자 0~9의 10진수, 16진수 값의 아스키 코드표이다.

아스키 코드표를 보면 char형의 (0, 1, 2)는 int형으로 (48, 49, 50)가 나오기 때문에
str.charAt(i) 값에서 48씩 빼서 해결했다. (48 대신 '0'으로 표현할 수도 있다.)

str.charAt(i)-48;

에러:
문제를 처음 접했을 때 String.str = sc.nextLine(); 으로 둘째 줄을 입력받으려고 하다가 java.lang.StringIndexOutOfBoundsException: String index out of range: 0 라는 에러가 발생하였는데 nextInt()에서 숫자를 입력받고 엔터를 입력하였더니 개행문자 전까지만 입력을 받고 개행문자(\n)는 nextLine()에서 str의 길이가 0이 되어버려 발생한 문제였다.

// 숫자 입력후 엔터를 눌러 에러가 발생한 예
int a = sc.nextInt();		
String str = sc.nextLine();
profile
나만의 텃밭을 가꾸어보자

0개의 댓글