Written

백준 / 2231 / 분해합 / C++ 본문

알고리즘 문제풀이

백준 / 2231 / 분해합 / C++

steeringhead 2023. 5. 4. 20:16

백준에서 알고리즘 문제를 푸는건 오랜만입니다. 뭐니뭐니해도 역시 알고리즘 문제풀이 할 때가 가장 재미있는 것 같습니다..

 

https://www.acmicpc.net/problem/2231

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

어떤 수 N이 주어지면 N을 만드는 또다른 M중 최솟값을 구하는 문제였습니다. 여기서 M은 M과 각 자리수의 합을 더했을 때 N을 만드는, 문제에서 말하는 생성자입니다. 처음에는 특별한 규칙이 있나 생각을 해봤는데 딱히 그런건 없는 느낌이 들어서 시간제한도 2초고 입력 최댓값도 여유있는 것 같아 브루트포스(모든 경우를 다 따져보는 알고리즘)을 사용해서 풀었습니다.

 

처음엔 어려워 보이는듯? 했지만 첫 제출에 바로 맞았습니다. 비록 답이 앞에서 나오고 코드가 종료되기는 하지만, 아무래도 주어진 입력값의 범위인  N(1 ≤ N ≤ 1,000,000) 전범위를 for문에서 돌리는 코드이다 보니 좀 더 효율적인 코드가 있을 것 같지만.. 나름 직관적인 코드라는 생각이 들어서 기록해봅니다 !

 

 

Comments