#문제
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요
# 제한사항
n은 0 이상 3000이하인 정수입니다.
# 입출력 예
ex) 1) 12의 약수는 1,2,3,4,6,12 이다. 이를 모두더하면 1+2+3+4+6+12 = 28이다
2) 5의 약수는 1,5 이다. 이를 모두 더하면 1+5 = 6이다
# 풀이
class Solution {
fun solution(n: Int): Int {
var answer = 0
for (i in 1..n){
if (n%i == 0){
answer += i
}
}
return answer
}
}
예시에서 볼 수 있듯이 약수로 나누면 나머지가 모두 0인 특징을 볼 수 있다
따라서 for문을 통해 1부터 n까지 반복문을 돌다가, 나머지가 0이면 그 값을 계속 더해주도록 코드를 짰다
# 다른사람 풀이
class Solution {
fun solution(n: Int): Int {
var answer = 0
answer = (1..n).filter { n % it == 0 }.sum()
return answer
}
}
filter를 사용해서 풀이하는법!
filter = for문과 if문을 합쳐놓은거라고 생각하면 편할것같다
1부터 n까지 실행하는데, n을 실행되는 값으로 나눴을때 나머지가 0이되는것들을 합쳐서 리턴한다??
filter에 대해 좀 더 학습해보기!!
'Computer Science > 알고리즘' 카테고리의 다른 글
프로그래머스 알고리즘 문제[x만큼 간격이 있는 n개의 숫자] (0) | 2024.03.07 |
---|---|
프로그래머스 알고리즘 문제[나머지가 1이 되는 수 찾기] (0) | 2024.03.06 |
프로그래머스 알고리즘 문제[자릿수 더하기] (0) | 2024.02.24 |
프로그래머스 알고리즘 문제[평균 구하기] (0) | 2024.02.24 |
프로그래머스 알고리즘 문제[짝수와 홀수] (0) | 2024.02.24 |