JiSoo's Devlog
[백준 / 파이썬] 2231번 분해합 본문
n = int(input())
r = 0
for i in range(1, n+1):
a = list(map(int, str(i)))
r = sum(a) + i
if r == n:
print(i)
break
if i == n :
print(0)
216 = 198 + 1 + 9 + 8 여기서 198이 가장 작은 분해합
브루트포스 알고리즘 사용
1부터 시작해 가장 작은 생성자 찾으면 탈출
정수의 각 자릿수를 리스트로 받기 위해 map함수 사용하고 각 자릿수 값을 int로 형변환
예를 들어 245를 입력받았다면 리스트 a는 [2, 4, 5]가 된다
분해합과 입력값이 같으면 그 분해합은 생성자이기 때문에 탈출해 그 값 출력
728x90
'코테준비' 카테고리의 다른 글
[백준 / 파이썬] 18110번 solved.ac (1) | 2024.01.14 |
---|---|
[백준 / 파이썬] 1874번 스택 수열 (0) | 2024.01.14 |
[백준 / 파이썬] 2108번 통계학 (0) | 2024.01.13 |
[백준 / 파이썬] 2775번 부녀회장이 될테야 (1) | 2024.01.13 |
[백준 / 파이썬] 10773번 제로 (0) | 2024.01.13 |