안녕하세요! 데코입니다!
오늘은 프로그래머스 코딩테스트 연습에 있는 "약수의 합" 문제를 포스팅하려고 합니다!
바로 포스팅 시작할게요! :)
(출처 : 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의 나머지 = 2
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 문제들을 위주로 포스팅하려고 합니다!
설명이 어려운 부분 혹은 잘 이해가 안 가는 부분
그리고 더 궁금한 내용이 있다면
언제든지 댓글로 남겨주세요!
빠르게 궁금증을 해결해 드릴게요!
공감과 댓글은 큰 힘이 됩니다!
오늘도 블로그 방문해 주시고
포스팅 읽어주셔서 감사합니다!
'Skill Sets > Python' 카테고리의 다른 글
[Python] 짝수와 홀수(프로그래머스/python/Level 1) (38) | 2023.08.01 |
---|---|
[Python] 나머지가 1이 되는 수 찾기(프로그래머스/python/Level 1) (23) | 2023.07.30 |
[Python] 평균 구하기(프로그래머스/python/Level 1) (31) | 2023.07.23 |
[python/pandas] 판다스(pandas) 활용한 데이터 전처리(3) (27) | 2023.05.21 |
[python/pandas] 판다스(pandas) 활용한 데이터 전처리(2) (39) | 2023.05.12 |