관리 메뉴

솜씨좋은장씨

[BaekJoon] 9506번 : 모든 약수의 합 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 9506번 : 모든 약수의 합 (Python)

솜씨좋은장씨 2022. 8. 5. 22:00
728x90
반응형

정말 바빴던 요즘! 드디어 근 3일만에! 문제를 풀게 되었습니다.

코딩 1일 1문제! 오늘의 문제는! 백준의 모든 약수의 합 입니다.

👨🏻‍💻 문제 풀이

먼저 입력받은 수의 약수를 구하는 함수를 먼저 하나 만들어 주었습니다.

def find_a_factor(N):
    factor_list = []
    cnt = 0
    
    for num in range(1, (N // 2) + 1):
        if N % num == 0:
            factor_list.append(num)
    return factor_list

2022.06.27 - [Programming/코딩 1일 1문제] - [BaekJoon] 2501번 : 약수 구하기 (Python)

 

[BaekJoon] 2501번 : 약수 구하기 (Python)

코딩 1일 1문제! 오늘의 문제는 백준의 약수 구하기 입니다. 2501번: 약수 구하기 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. www.acmicpc.net 👨

somjang.tistory.com

이전에 풀었던 약수 구하기 코드를 응용 하여 만들었습니다.

위의 함수를 통하여 N을 제외한 모든 약수를 구한 다음

def whole_factor_sum(N):
    factor_list = find_a_factor(N)
    
    if sum(factor_list) == N:
        answer = f"{N} = {' + '.join(map(str, factor_list))}"
    else:
        answer = f"{N} is NOT perfect."
        
    return answer

 

 

구한 모든 약수의 합과 N이 같을 경우 약수를 + 로 join한 문자열을 정답으로

그렇지 않을 경우는 N is NOT perfect. 를 정답으로 하도록 하였습니다.

👨🏻‍💻 코드 ( Solution )

def find_a_factor(N):
    factor_list = []
    cnt = 0
    
    for num in range(1, (N // 2) + 1):
        if N % num == 0:
            factor_list.append(num)
    return factor_list


def whole_factor_sum(N):
    factor_list = find_a_factor(N)
    
    if sum(factor_list) == N:
        answer = f"{N} = {' + '.join(map(str, factor_list))}"
    else:
        answer = f"{N} is NOT perfect."
        
    return answer


if __name__ == "__main__":
    while True:
        N = int(input())
        
        if N == -1:
            break
            
        print(whole_factor_sum(N))
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments