알고리즘
[백준/BOJ] Bronze4 - 11720번 숫자의 합 (JAVA)
전감자(◔◡◔)
2023. 4. 1. 21:18
11720 숫자의 합
문제
N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
출력
입력으로 주어진 숫자 N개의 합을 출력한다.
풀이
자바로 푸는 첫 백준 문제이다 보니 런타임 에러나 컴파일 에러 같은 시행착오를 많이 겪었던 문제다.
문제 자체는 N 값과 sNum 을 차례로 입력 받아 sNum 을 char 형 배열로 변환 하여
for 문으로 sum 문자열의 합계를 구해주면 되는 간단한 문제
주의 할 점은 N이 100 되버리면 int 형이나 long 형으로 받아들이지 못하기 때문에
String 으로 받아들여서
1. char 형 배열로 바꿔주거나
2. String 인 상태에서 charAt() 을 사용하는 방향으로 가야한다는 것
그리고 문자를 숫자로 변환해서 계산할 때 문자 '1'과 숫자 1의 아스키 코드 값이 48 차이가 난다는 것을 이용해
- 48 또는 - '0' 을 해줘야 한다는게 이 문제의 포인트이다.
그리고 왜 인지 모르겠는데 sc.close() 를 넣으니 계속 런타임 에러가 떴다 왜 인지 알려주신다면 압도적 감사,,
package array;
import java.util.Scanner;
public class JV11720_숫자의합 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); //자릿수 N 입력(0<=N<=100)
String sNum = sc.next(); // N자리 정수 입력
char[] cNum = sNum.toCharArray(); // String 을 Char형 배열로 전환
int sum = 0;
for (int i=0; i<n; i++) {
sum += cNum[i] - '0';
}
System.out.println(sum);
}
}