백준(BOJ)

[백준] 2231번 분해합 : 파이썬(python) 설명

CuriHuS 2021. 2. 24. 21:28
반응형

www.acmicpc.net/problem/2231

 

2231번: 분해합

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

www.acmicpc.net

 


Hint

 

x

 


Solution

 

n=int(input())

for i in range(1000000):
    result=i
    for j in str(i):
        result+=int(j)
    if result==n:
        print(i)
        break
    if i==999999:
        print(0)

해당 코드는 python 3으로

1828ms로 통과했습니다

 

1,000,000번 까지라 조금 애매했지만

다행히 통과는 되는 코드입니다

 

 

위 코드는

0부터 1,000,000까지

오름차순으로 시작하여 가장 낮은 답을 찾아내는 방식입니다

 

result에 먼저 해당 값을 더하고

그 후에 자릿수에 있는 수들을 더해서

result가 n값인

숫자 i를 찾아내는 알고리즘입니다

 

또한 i가 999,999가 될 때까지

답을 찾지 못했으면 생성자는 없는 경우이므로

0을 출력합니다

 

n=int(input())

for i in range(1, n+1):
    result=i
    for j in str(i):
        result+=int(j)
    if result==n:
        print(i)
        break
    if i==n:
        print(0)
        break

추가적으로 해당 코드도 통과하지만

오히려 1860ms로 더 느리게 통과합니다

 

반응형