- 난이도: 브론즈 2
- 알고리즘: 브루트포스 알고리즘
나의 원래 코드는 아래와 같았다.
for (int i = 1; i < n; i++) {
sum = 0;
sum += i;
while (i > 0) {
sum += (i % 10);
i /= 10;
}
if (sum == n) { flag = i; break; }
}
왜 프로그램이 종료가 안될까...하고 정말 한참을 고민했다. 알고보니 무한 루프에 빠지게 된 것이 원인이였다.
i가 1 -> while문 내에서 i는 0으로 변함 -> i = 0 -> i = 0 -> ...
그래도 미리 이런 실수를 해서 면역이 됐다고 생각한다. 다음엔 이런 실수 하지 말자...
#include <iostream>
using namespace std;
int main() {
cin.tie(NULL);
cout.tie(NULL);
std::ios::sync_with_stdio(false);
int n, sum, temp;
int flag = 0;
cin >> n;
for (int i = 1; i < n; i++) {
temp = i;
sum = 0;
sum += temp;
while (true) {
sum += (temp % 10);
if (temp > 10) {
temp /= 10;
}
else break;
}
if (sum == n) { flag = i; break; }
}
cout << flag;
}