백준 11720. 숫자의 합

유현경·2023년 9월 25일
0
  1. 문제분석
    N의 범위가 1~100 이므로 int, long으로 담을 수 없음.

    int 범위 : -2147483647 ~ 2147483647
    long 범위 : -9223372036854775808 ~ 9223372036854775808

-> 문자열 형태로 입력 받고
-> 문자 배열로 반환
-> 배열값 순서대로 읽고 숫자로 변환해서 더하기

문자열 -> 숫자형은 아스키코드를 알아야 함. 아스키코드에서 같은 의미의 문자와 숫자의 코드 값 차이는 '48'.
ex) 문자 '1'의 아스키코드 값 = 49. 문자 '1'을 숫자 1로 변환 하려면 '1' - 48 or '1' - '0'

  1. 손으로 풀기

1) 숫자의 개수만큼 입력받은 값을 String으로 저장

String sNum = 10987654321

2) String으로 입력받은 값을 char[]형으로 변환
char 1 0 9 8 7 6 5 4 3 2 1

3) 인덱스 0부터 끝까지 배열을 탐색하여 각 값을 정수형으로 변환하고 결괏값에 더하여 누적

  1. 슈도코드 작성
N값 입력받기
길이 N의 숫자를 입력받아 String형 변수 sNum에 저장하기
sNum을 다시 char []형 변수 cNum에 변환하여 저장하기
int형 변수 sum 선언하기
for(cNum 길이만큼 반복하기)
{
	배열의 각 자릿값을 정수형으로 변환하며 sum에 더하여 누적하기
}
sum 출력하기
  1. 코드 구현
import java.util.Scanner;

public class ArrayData {
    public static int solution() {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        // 입력값을 String형 변수 sNum에 저장한 후 char[]형 변수로 변환하기
        String sNum = sc.next();
        char[] cNum = sNum.toCharArray();
        int sum = 0;
        for (int i = 0; i < cNum.length; i++) {
            sum += cNum[i] - '0'; //cNum[i]를 정수형으로 변환하면서 sum에 더하여 누적
        }

        return sum;
    }
}

0개의 댓글