본문 바로가기
알고리즘 PS/백준 알고리즘

[백준] 11720번 - 숫자의 합 (Java)

by 백호루이 2022. 9. 21.
반응형

 

<문제 분석>

(방법  #1)

숫자가 문자열 한개로 입력된다. 입력 받은 문자열을 char 배열로 잘라서 정수형 배열에 나눠 담아야 한다.

나눠담은 정수형 배열을 순차적으로 더하면 된다.

 

(방법 #2)

정수 하나로 받아서 MOD를 사용해서 각 자리수를 계산할 수 있다.

 

<코드 구현>

import java.util.*;
import java.io.*;

/*
[백준] 11720번 - 숫자의 합 (Java)
*/

public class Main {
    static int N, number;
    static int A[];
    
    void InputData() {
        Scanner in = new Scanner(System.in);
        N = in.nextInt();
        String str = in.next();
        A = new int[N];
        for (int i=0; i<N; i++) {
            A[i] = str.charAt(i) - '0';
        }
        number = Integer.parseInt(str);
        
    }
    // 1. 재귀함수 사용
    int DFS(int n, int sum) {
        if (n == N) return sum;
        sum += A[n];
        return DFS (n+1, sum);
    }
    // 2. 반복문 사용
    int Loop(int sum) {
        for (int i=0; i<N; i++) {
            sum += A[i];
        }
        return sum;
    }
    // 3. 수학적 풀이
    int Mod(int sum) {
        int mod = 1;
        for (int i=1; i<N; i++) {
            mod *= 10;
        }

        while (N > 0) {
            sum += number/mod;
            number = number%mod;
            mod /= 10;
            N--;
        }
        return sum;
    }
    void Solve() {
        int num = 0;
        //System.out.println(DFS(0, num));
        //num = 0;
        //System.out.println(Loop(num));
        //num = 0;
        System.out.println(Mod(num));
    }

	public static void main(String[] args) {
        Main m = new Main();
        m.InputData();
        m.Solve();
	}
}

 

<제출 결과>

반응형

댓글