코테/백준

[백준/JAVA] 2231번: 분해합

imname1am 2023. 6. 30. 00:18
반응형

🔺 문제

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.*;
import java.io.*;
 
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());
        long answer = 0;
        
        for(long i = 1 ; i <= N ; i++) {
            long tmp = 0;    // 분해합 - N의 값
            long num = i;
 
            while(num > 0) {
                tmp += num % 10;
                num /= 10;
            }
 
            if(i + tmp == N) {
                answer = i;
                break;
            }
        }
        
        System.out.println(answer);
    }
}
 
cs
✅ 해결 아이디어
✔ 브루트포스
- 1부터 N까지 숫자 올려가면서 가장 작은 생성자를 찾으면 된다.

 

 


🔺 다른 풀이들

다들 비슷...

 


💬 느낀 점

저 범위를 자릿수가 같은 수부터 시작하려고 했는데 그랬더니 틀렸다.  (예를 들어 숫자가 세자리수면 100부터 시작하게)

그냥 1부터 완전탐색해주면 되었던 것이다~~

 

(반례 : input - 18 / output - 9)

1회독 2회독 3회독 4회독 5회독
V        
반응형