본문 바로가기

프로그래머스, 백준

백준 2231번 분해합

https://www.acmicpc.net/problem/2231

0부터 N까지 탐색하라고 만든 문제는 아니겠지...라고 생각은 했지만 마땅히 좋은 방법이 생각나지 않았다.

비효율적이어도 나의 현 실력으로 풀 수 있는 방법으로 접근해보자하고 0부터 N까지 탐색하는 법으로 코드를 짰다.

 

N = int(input()) 

result = 0
for i in range(N): # 0부터 N까지 순회

    result = i 
    str_i = str(i) # 자릿수 문자열로 변환
    for j in str_i: #현재 값을 이루는 각 자릿수에 대해 반복
        i += int(j) 

    if i == N: 
        print(result)
        break
else: # 생성자가 없을 때는 0 출력
    print(0)

확실히 시간이 오래 걸렸다.

 

간결하게 코드를 짠 분이 있어 참고하면 좋을 것 같다.

https://wondytyahng.tistory.com/entry/%EB%B0%B1%EC%A4%80-2231-%EB%B6%84%ED%95%B4%ED%95%A9

 

[BaekJoon] 백준 2231 분해합 (Python / 파이썬)

BaekJoon 백준 BOJ 2231 분해합 문제는 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자릿수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 할 때 생성

wondytyahng.tistory.com

 

'프로그래머스, 백준' 카테고리의 다른 글

백준 2798번 블랙잭  (0) 2024.05.08
백준 9095번 1,2,3 더하기  (1) 2024.05.01
백준 2775번 부녀회장이 될테야  (1) 2024.05.01
백준 2629번 양팔저울  (0) 2024.04.02
백준 1520번 내리막길  (0) 2024.04.02