Lumpy Space Princess - Adventure Time
코딩테스트/백준

백준[2231] - 분해합

yaebb_82 2023. 2. 11.

 

 

문제

 

2231번: 분해합

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

www.acmicpc.net

 

 

 

작성한 코드

N = int(input())
result = 0

for i in range(1, N+1):
    M = list(map(int, str(i)))
    K = i + sum(M)
    
    if K == N:
        result = i
        break

print(result)

(문제 이해가 잘 되지 않아서 문제푸는 방법을 바로 생각해내지 못했다.)

- 숫자 N을 입력받는다.

- 결과값을 저장할 result를 0으로 초기화시켜준다.

- 1부터 N까지(range(1, N+1)) for문을 돌리면서 비교한다.

- 숫자는 인덱스로 접근할 수 없기 때문에, i를 str로 형변환해서 각 자리값을 int로 형변환하여 리스트 M을 만들어준다.

- sum()으로 리스트 M의 합을 구하고, 거기에 i를 더해서 분해합 K를 구한다.

- 만약 K가 N과 같다면, K는 N의 생성자란 소리이기 때문에 해당 i의 값을 result에 저장해주고 for문을 break로 빠져나온다.

- 최종적으로 result의 값을 print()로 출력해준다.

 

 

 

반응형

'코딩테스트 > 백준' 카테고리의 다른 글

백준[1436] - 영화감독 숌  (0) 2023.02.14
백준[7568] - 덩치  (0) 2023.02.13
백준[2798] - 블랙잭  (0) 2023.02.11
백준 [13305] - 주유소  (0) 2023.02.10
백준 [1541] - 잃어버린 괄호  (0) 2023.02.07

댓글