1. 조건
- N의 범위 1<= N <= 1,000,000
- 최악의 경우 N의 값이 1,000,000이라 하더라도 무식하게 1부터 1,000,000까지 하나하나 분해합을 구한다 했을 때 최대 1,000,000 * 7이기 때문에 1부터 비교하면 된다.
C++)
#include <iostream>
using namespace std;
int FindNumber(int num) {
int sum = num;
while (num > 0) {
sum += (num % 10);
num /= 10;
}
return sum;
}
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
int ans = 0;
for (int i = 1; i <= n; i++) {
if (FindNumber(i) == n) {
ans = i;
break;
}
}
cout << ans;
return 0;
}
Python)
import sys
n = int(sys.stdin.readline().rstrip())
ans = 0
def find_number(num):
sum = num
while num > 0:
sum += (num % 10)
num //= 10
return sum
for num in range(1, n+1):
if find_number(num) == n:
ans = num
break
print(ans)'백준 2 > 완전탐색' 카테고리의 다른 글
| [백준 3085] 사탕게임 (C++) (0) | 2020.12.07 |
|---|---|
| [백준 10448] 유레카 이론 (C++) (0) | 2020.12.07 |
| [백준 10971] 외판원 순회2 (0) | 2020.12.07 |
| [백준 2309] 일곱 난쟁이 (C++/Python) (0) | 2020.12.07 |
| [백준 10819] 차이를 최대로 (0) | 2020.12.07 |