입력값으로 주어지는 자연수의 범위가 100만이고,
각 반복문에서 입력값을 하나씩 나누고,
더하는 건 O(1)의 시간복잡도이므로
완전탐색을 사용했다.
#include<iostream>
using namespace std;
void solution(int& input);
void input(int& input) {
cin >> input;
}
void solution(int& input) {
int sum = 0; //합
for (int i = 0; i < input; i++) { //범위는 0부터 입력값까지
int temp = i; //임시값인 temp에 i를 넣어준다.
sum += temp; //원래 수 더해준 후
while (temp > 0) { //각 자리 수 더해준다.
sum += temp % 10;
temp /= 10;
}
if (sum == input) { //만약 생성자라면
cout << i; //출력후 return
return;
}
else //아니면 sum=0으로 초기화
sum = 0;
}
cout << 0; //반복문 빠져나온거면
return; //생성자가 없는것이므로 0출력
}
int main() {
int in = 0;
input(in);
solution(in);
}
처음엔 그냥 생각없이 temp값을 따로 안 빼고
바로 while(i>0) i/=10;을 했더니
i가 계속 0이 되어 본의 아닌 무한 루프가 되었다.
멍청하다. 더 신중하게 풀자.
안멍청하다!!!@@ 그럴수도 잇는것이다!!>>!!! 시행착오는 당연히있을수바께옵찌 하나씩줄여나가면 된다!! 화이팅🔥🔥😊