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 출력

댓글남기기