풀이
import java.util.Scanner;
public class 숫자의합 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 1번째 입력 : 숫자개수 N
// 입력값을 String형 변수 sNum에 저장한 후 char[]형 변수로 변환하기
// sc.next() : 입력으로부터 한줄 전체 읽음
String sNum = sc.next(); // 2번째 입력 : N개의 숫자가 공백없이 주어짐
char[] cNum = sNum.toCharArray();
int sum = 0;
for(int i=0; i < cNum.length; i++){
sum += cNum[i] - '0'; // cNum[i]를 정수형으로 변환하면서 sum에 더하여 누적하기
}
System.out.println(sum);
}
}
int의 최댓값은 약 10자리이다.
10자리를 넘으면 InputMismatchException 또는 숫자가 잘못 저장될 가능성이 있다.
N은 최대 100이므로 100자리일 경우 int, long형으로 받지 못한다.
2번째로 입력받는 숫자들을 String값으로 받고 이를 toCharArray()를 사용하여 문자배열로 변환하고,
문자 배열값을 순서대로 읽으면서 숫자형으로 변환하여 더한다.
문자값을 다시 숫자형으로 변환할 때에는 아스키 코드를 이용한다.
같은 의미의 문자와 숫자의 코드 값 차이는 48이다.
예를들어 문자 '1'은 아스키코드 값이 49이므로 문자 '1'을 숫자 1로 변환하려면 '1' - 48 또는 '1' - '0'과 같이 연산하면 된다.
알게된 것
- toCharArray() : String 을 char 배열로 변환
- 문자 -> 숫자 변환하고 싶을 때는 아스키 코드값을 활용한다
- '1' - 1 = 48 이다.
'코딩테스트 > 백준' 카테고리의 다른 글
[백준 1940] 주몽 (Java) (0) | 2025.02.23 |
---|---|
[백준2018] 수들의 합5 (Java) (0) | 2025.02.23 |
[백준 11660] 구간 합 구하기5 (Java) (0) | 2025.02.23 |
[백준 11659] 구간 합 구하기4 (Java) (0) | 2025.02.23 |
[백준 1546] 평균 (Java) (0) | 2025.02.23 |