링크 : https://www.acmicpc.net/problem/2231
2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
- 문제
- 소요시간: 20분 이상


- 설계하기(접근방법)
1. 입력받기
2. 알고리즘 해석
1) 1부터 n까지 분해합을 완전탐색을 통해 구해나간다
while문을 통해 각 자리수를 더한다
2) 분해합이 구해지면 for문을 break(그 것이 최소의 분해합이다)한다
3. 출력하기
- 코드(출력)
n = int(input())
cnt = 0
flag = 0
k = n
for i in range(1, n + 1):
temp = 0
check = i
if i < 10:
pass
else:
temp = i
while (i):
temp += (i % 10)
i //= 10
if temp == n:
flag = 1
answer = check
break
if flag == 1:
print(answer)
else:
print(0)
- 얻어갈 부분
1. 분해합을 구하는 범위를 따로 구하려고 해서 시간이 오래걸렸다. 빅오를 초과히지 않는 범위라면은 그냥 문제를 풀자
'알고리즘(백준) > 브루트 포스' 카테고리의 다른 글
| [알고리즘/브루트 포스] 1436번 : 영화감독 숌 - python (0) | 2024.01.12 |
|---|---|
| [알고리즘/브루트 포스] 15721번 : 번데기 - python (0) | 2023.06.08 |
| [알고리즘/브루트 포스] 18312번 : 시각 - python (0) | 2023.06.01 |
| [알고리즘/브루트 포스] 19532번 : 수학은 비대면강의입니다 - python (1) | 2023.05.30 |
| [알고리즘/완전 탐색] 2798번 : 블랙 - python (0) | 2023.05.26 |