import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int res = 0; // 최종적으로 출력할 값
for(int i=0;i<N;i++){
int sum = 0; // 각 자리수의 합을 저장할 값
int number = i; // 현재 검사하고 있는 수
while(number!=0){ // 1의 자리를 계속해서 없애서 결국 마지막에는 number가 0이 되고 탈출하게 된다.
sum = sum+number%10; // 1의자리수를 더해준다 sum에
number = number/10; // 1의자리수를 없애준다.이 과정을 반복해주면 결국 sum에는 모든 자리수가 더해지고 number는 0이돼서 탈출하게 된다.
}
if(N==sum+i){ // sum은 모든 자리수를 합친 값.이 값과 자기 자신인 number를 합쳤을 때 N과 같다면 number가 N의 생성자라는 소리이다.
res=i; // 정답에number를 넣어주고 for문을 탈출한다.
break;
}
}
sc.close();
System.out.println(res); // 만약 if문이 한번도 작동 안 했을 경우 생성자가 존재하지 않는다는 뜻으로 0이 출력된다.
}
}
브루트 포스란?
무식하게 모든 값들을 하나 하나 전부 다 시도해보면서 답을 찾는것.노가다라 보면 된다고 이해했다.
이건 정답 코드다.주석을 최대한 자세하게 달아놨으니 읽어보자.
브루트포스 자체보다 생성자를 어떻게 찾는지 몰라서 좀 애먹었다.while문 안의 자리값 전부 더하고 탈출하는 코드가 이 문제의 핵심이다.그거 말고는 크게 어려운게 없다.