[백준] 2231 분해합 자바

이다혜·2024년 1월 10일
0

백준

목록 보기
12/29

📎 문제 출처


https://www.acmicpc.net/problem/2231

📌 문제 설명


❓ 풀이 방법


1부터 n-1까지의 모든 수에 대해
(각 자리의 수의 합 + 그 수) = n 인지 확인한다.

이 때 각 자리의 수의 합을 구하는 방법을 두가지로 풀었다.
1. 숫자를 문자열로 바꾼 다음 문자열의 각 자리 문자를 숫자로 바꾸어 더한다.
2. while문을 사용하여 숫자가 0보다 클 동안 숫자를 10으로 나눈 나머지 즉 1의 자리 수를 더한 후 숫자를 10으로 나눈 몫을 다음 반복문에 사용한다.

📌 Code1


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {


    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        int m = 0;

        for(int i = 1; i < n; i++) {
            int sum = i;
            String s = String.valueOf(i);
            for(char c : s.toCharArray()) {
                sum += Character.getNumericValue(c);
            }
            if(sum == n) {
                m = i;
                break;
            }
        }
        System.out.println(m);
    }
}

📌 Code2


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {


    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        int m = 0;

        for(int i = 1; i < n; i++) {
            int sum = i;
            int number = i;

            while(number != 0) {
                sum += number % 10;
                number /= 10;
            }

            if(sum == n) {
                m = i;
                break;
            }
        }
        System.out.println(m);
    }
}

0개의 댓글