https://www.acmicpc.net/problem/11720
54321
5+4+3+2+1
수학적으로 생각해보면
54321 / 10000 = 5 추출
54321 % 10000 = 4321
4321 / 1000 = 4
4321 % 1000 = 321….
이렇게 하는 것이 간단하지는 않음.
이렇게 하면 100자리수가 들어온 경우에 대해서는 int, long형으로 받을 수 없음.
꼼꼼하게 먼저 파악한 후 분석하고 나서 구현에 들어가야 함.
여기서 제일 핵심 : 손으로 해보다가 안 된다는 것을 깨달아야 함. int, long형으로 받을 수 없다는 것을 깨닫게 됨.
1 ≤ N≤ 100 이므로 int, long형과 같은 숫자형으로 담을 수 없음.
String 형태로 받게 되면 “54321” → 이를 배열로 {5,4,3,2,1}로 만들고 싶음.
toCharArray함수를 쓰면 char[] 배열로 만들 수 있음
char → int는 아스키코드 원리로 연산 가능.
‘1’ - 1 의 아스키코드 차이는 48 차이!
‘1’ - 48 = 1로 떨어짐.
이렇게 진행하면 문제가 쉽게 풀릴 것임.
N값 입력받기
길이 N의 숫자를 입력받아 String형 변수 sNum에 저장하기
sNum을 다시 char[]형 변수 cNum에 변환하여 저장하기
int형 변수 **sum** 선언하기
for (cNum 길이만큼 반복하기)
{
배열의 각 자릿값을 **정수형**으로 변환하며(아스키코드) **sum에 더하여 누적하기**
}
sum 출력하기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Main2 {
public static void main(String[] args) throws IOException {
// 내가 푼 것
// BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// int n = Integer.parseInt(br.readLine());
// String line = br.readLine();
//
// int sum = 0;
// for (int i = 0; i < n; i++) {
// sum += line.charAt(i) - '0';
// }
// System.out.println(sum);
// 강의에서 푸신 코드
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
String sNum = sc.next();
char[] cNum = sNum.toCharArray();
int sum = 0;
for (int i = 0; i < cNum.length; i++) {
sum += cNum[i] - '0';
}
System.out.println(sum);
}
}