백준/ Bronze2 문제 , 백준 파이썬 2231 , 분해합
<문제 출처>
https://www.acmicpc.net/problem/2231
2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
------------------------------------------------------------------------------------------------------------------------------
예전에 풀다 넘겼는데, 다시 풀어보니까 바로풀린다.
생각해보면 자리수에따라 최솟값으로 나올수 있는 최소의 수는 "주어진수 - (9*자릿수)" 이다.
예를들어 세자릿수 256 같은경우, 아무리 작아봐야 각자릿수 최댓값9 를 3번빼준 256-27= 229 이다.
그래서 반복문 돌릴때 1부터 시작할필요없이 229부터 시작하면 된다.
만약 80 이라는 두자릿수라면 80-18= 62 부터 시작하면 된다.
근데 이 방식으로 하면 12 같은 경우 12-18= -6 음수가 나오므로 조심해야된다.
이런케이스에서는 음수부터 할필요없기때문에 0까지 끌어올려준다음 0부터 시작해주면된다.
------------------------------------------------------------------------------------------------------------------------------
정답
'알고리즘 공부 > 백준 - 파이썬' 카테고리의 다른 글
백준/ Bronze2 문제 , 백준 파이썬 1373 , 2진수 8진수 (0) | 2021.12.03 |
---|---|
백준/ Bronze2 문제 , 백준 파이썬 6359, 만취한 상범 (0) | 2021.12.03 |
백준/ Bronze2 문제 , 백준 파이썬 19532 , 수학은 비대면강의입니다 (0) | 2021.12.03 |
백준/ Bronze2 문제 , 백준 파이썬 14581 , 팬들에게 둘러싸인 홍준 (0) | 2021.12.03 |
백준/ Bronze2 문제 , 백준 파이썬 10810, 공 넣기 (0) | 2021.12.03 |