문제 해석
- 이문제를 이해하기 위해 꽤 많은 시간이 소요되었다..(문해력이 좀 부족한 듯 싶다.😂)
- 문제를 해석해보자면,
- 어떤 자연수(N)을 입력받아서 그 자연수를 만들 수 있는 어떤 자연수(M)을 찾으면 되는 문제이다.
- 만들어야하는 숫자(N)을 만들 수 있는 기준을 충족하면 N의 생성자(M)이라고 부를 수 있는데, 그 기준은 아래와 같다.
- N은 여러개의 생성자를 가질 수도, 아예 안가질 수도 있다.
- 여러개를 가지는 경우는 가장 작은 생성자를 생성자가 없을 경우는 0을 출력하면 된다.
- 이 풀이 과정을 코드로 적은 게 바로 아래 코드이다.( 코드의 자세한 설명은 주석으로 작성해두었다.)
코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
br.close();
int M = 0;
for(int i = 1; i <= N; i++) {
int number = i;
int res = 0;
while(number > 0){
res += number % 10;
number /= 10;
}
if(res + i == N){
M = i;
break;
}
}
bw.write(M + "\n");
bw.flush();
bw.close();
}
}
결과
느낀점
- 이제 문제를 이해하는 게 점점 어려워지는 것 같다.
- 처음에 이 2231 분해합 설명을 읽고는 "무슨 소리이지?" 계속 생각하고, 읽고, 생각하고, 읽고 문제를 이해하지 못해서 멍해 있었다.
- 책을 좀 많이 읽어야했는데... 앞으로 더 많은 코드들을 작성하면 더 어려운 문제가 많을 텐데 이해하기 어려운 문제들도 많이 마주할텐데... 좀 벌써부터 걱정된다.
- 하지만, 해야지!