문제 풀이 및 개발 공간

[백준] 2231번 분해합 문제! (bronze 2 본문

백준공부/java

[백준] 2231번 분해합 문제! (bronze 2

gomduri43 2022. 8. 3. 13:10

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
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 a=Integer.parseInt(br.readLine());
		String num=String.valueOf(a);  //자리수 
		int temp=0;					  //반복문에서 사용할 변수지만, 마지막에 또 a와 다른지 비교해야하므로
        							  //반복문 밖에서 일단 초기화 해둔다. 
		int newNum=a-(num.length()*10); //시작점 구하기
		newNum= newNum<0 ? 1:newNum;  //보통 a-자리수*10정도 선에서 생성자가 나온다. 
                                      //하지만 그 값이 음수일 수 있으므로, 음수일땐 0으로 해준다. 
		for(int i=newNum; i<=a; i++) {
			temp=i;
			num=String.valueOf(temp);
			char[] room=num.toCharArray();
			for(int j=0; j<room.length; j++) {
				temp+=room[j]-'0';
			}
			if(temp==a) {
				bw.write(i+"");
				break;
			}
		}
		if(temp!=a) {
			bw.write(0+"");
		}
		bw.flush();
	}
}