본문 바로가기

Skill Sets/Python

[Python] 약수의 합(프로그래머스/python/Level 1)

SMALL

안녕하세요! 데코입니다!

 

오늘은 프로그래머스 코딩테스트 연습에 있는 "약수의 합" 문제를 포스팅하려고 합니다!

 

바로 포스팅 시작할게요! :)

(출처 : https://school.programmers.co.kr/learn/courses/30/lessons/12928)

 


 

1. 문제 :  약수의 합(Lv. 1)


 

2. 문제 설명

 

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

 

[ 제한 사항 ]

 

n은 0 이상 3000 이하인 정수입니다.

 

[ 입출력 예 ]

 

n return
12 28
5 6

 

[ 입출력 예 설명 ]

 

입출력 예 #1
12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.

입출력 예 #2
5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

 


 

3. 문제 풀이

# 1안
def solution(n):
    answer_list = []
    for i in range(1,n+1):
        if n%i == 0:
            answer_list.append(i)
    answer = sum(answer_list)
    return answer

이번 문제 풀이는 1안 한 가지로 작성했습니다!

 

#  1안 풀이 설명

# [ 문제 풀이 설명 ]

 

문제를 풀기에 앞서 '약수'의 정의를 확인하면 아래와 같습니다.

 

약수의 정의(출처 : 네이버 지식 백과)

 

즉, 주어진 n 값의 약수의 찾기 위해서는

 

n을 임의의 값 x로 나눠서 나머지가 0인 값을 찾으면 됩니다.

 

따라서 1안은  for 반복문을 이용해서 1부터 n까지 실행을 반복해 주고

 

n을 반복분의 값 i로 나누서 나머지가 0이라면 i의 값을 answer_list라는 약수를 담은 변수에

 

append 해주고, 반복문 실행이 끝난 이후에 

 

sum() 함수를 통해 answer_list에 들어있는 값들을 모두 더해주었습니다.

 

n = 8을 예로 들어볼게요!

 

반복문을 통해 1부터 8까지 실행

 

8 % 1의 나머지 = 0 > append 실행(answer_list에 추가)

8 % 2의 나머지 = 0 > append 실행(answer_list에 추가)

8 % 3의 나머지 =

8 % 4의 나머지 = 0 > append 실행(answer_list에 추가)

 

8 % 5의 나머지 = 3

8 % 6의 나머지 = 2

8 % 7의 나머지 = 1

8 % 8의 나머지 = 0 > append 실행(answer_list에 추가)

 

answer_list = [1, 2, 4, 8]

 

sum(answer_list) = 1 + 2 + 4 + 8 = 15 

 

따라서 n=8인 경우 모든 원소의 합은 15입니다.

 

# 1안

def solution(n):
    # 약수들을 담아줄 list 선언

    answer_list = []
    # 1부터 n까지 반복

    for i in range(1, n+1):
        # n을 i로 나눠서 나머지가 0인지를 확인

        if n%i == 0:
            # 나머지가 0인 경우 answer_list에 약수 값을 append

            answer_list.append(i)
    # 모든 약수의 합을 answer에 할당

    answer = sum(answer_list)
    return answer

 

정답...!


 

4. 문제 풀이 후기

이번 정수의 n이 주어졌을 때 정수 n의 약수들을 모두 더한 값을 구하는 문제였습니다!

 

약수의 개념이 기억이 나지 않는것이 아니라면 쉽게 풀 수 있었을 것 같아요!

 

아직은 level 1 문제이고, 풀이에 자세하게 설명을 써 놓아서 이외에 제가 따로 코멘트할 것은 없습니다!

 



이번 포스팅은 프로그래머스 python을 이용한 코딩테스트 문제를 풀어보았습니다!

 

처음에는 반복문과 변수를 이용한 level 1 수준의 python 문제들을 위주로 포스팅하려고 합니다!

 

설명이 어려운 부분 혹은 잘 이해가 안 가는 부분

그리고 더 궁금한 내용이 있다면

언제든지 댓글로 남겨주세요!

빠르게 궁금증을 해결해 드릴게요!

공감과 댓글은 큰 힘이 됩니다!

오늘도 블로그 방문해 주시고

포스팅 읽어주셔서 감사합니다!

 

LIST