Baekjoon 문제 풀기 (2231번 : 분해합) Java
2231번 : 분해합
1. 문제읽기
문제대로 구현하기.
어렵게 풀려고 생각하다가 실패했다.
결국 도움을 받아 풀었다.
쉽게 생각하면 쉽게 풀렸을 것 같은 문제였다.
2. 제출 코드
예시로 256과 245를 들어줘서, n중 for문을 써야되나라고 생각하고 처음에 시도를 했다.
그러나 문제는 1부터 1,000,000까지기 때문에 몇 중의 중첩 for문을 써야할지 감이 오지 않았다.
각각의 자리수를 변수로 잡아 문제를 풀려고 했던 것이 실수였다.
결국 풀지 못하고 검색했다.
3. 공부할 것
그냥 1부터 +해가면서 맞는 답을 찾으면 되는 문제였다.
너무 어렵게 생각하려고 했다.
생성자가 없는 경우 0을 출력하는 것도 어렵게 생각하지 말고 if문 안에 변수를 갱신해주면 되는 것이였다.
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
int result = 0; // 정답 출력할 변수
for(int i = 0; i < n; i++) { // 0부터 n까지 1씩 증가하면서 찾기
int ans = i; // n을 직접 건드리지 않기 위해
int sum = 0; // 자릿수 합하기
while(ans != 0) { // 자릿수 나누기
sum += ans % 10;
ans = ans/10;
}
if(sum + i == n) { // 찾으면
result = i; // 답을 갱신
break;
}
}
System.out.println(result); // 못찾는 경우 0 출력
댓글남기기