JiSoo's Devlog

[백준 / 파이썬] 2231번 분해합 본문

코테준비

[백준 / 파이썬] 2231번 분해합

지숭숭숭 2024. 1. 13. 21:11

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