2231. 분해합 풀이
난이도: Bronze II
문제 주소: https://www.acmicpc.net/problem/2231
문제 풀이
이 문제는 이게 뭐라고 쓸때없이 굉장히 오래 고민했다
괜히 뭔가 최대한 딱 맞게 효율적으로 풀어보겠다고 분해합을 탐색하는 구간을 수학적으로 찾아보겠다고 머리 싸매다가 굳이 그럴 필요가 있나? 싶어져서
그냥 1 ~ N까지 다 해보는거도 O(n) 수행시간이라 굉장히 효율적이란걸 깨달았다...
알고리즘 풀이가 오랜만이라 그런가 겨우 브론즈2에서 이럴지는 몰랐다
최종 코드
#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <math.h>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
for (int i = 1; i < n; i++) {
int sum = i;
int temp = i;
while (temp > 0) {
sum += temp % 10;
temp /= 10;
}
if (sum == n) {
cout << i;
return 0;
}
}
cout << 0;
return 0 ;
}
'Algorithm > 백준' 카테고리의 다른 글
| [백준] 1654 - 랜선 자르기 (0) | 2026.03.13 |
|---|---|
| [백준] 10989 - 수 정렬하기 3 (0) | 2026.03.08 |
| 백준 - 15829 (0) | 2026.03.08 |
| 백준 - 1008 (0) | 2026.03.06 |
| 백준 - 3273 (0) | 2024.12.26 |