약수의 합

Anna·2024년 6월 11일

코딩테스트

목록 보기
7/28
post-thumbnail

🌫️ 문제

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

🌫️ 제한 사항

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


👻 내 풀이

👻 1차 코드

class Solution 
{
    fun solution(n: Int): Int 
    {
        var answer = 0  //answer를 선언하고 0으로 초기화 
        
        for ( i in 1..n)
        {
            if (n % i == 0) 
            {
                answer += i
            }
        }
        return answer
    }
}

오늘 1차 시도에서 바로 성공
i는 반복문에서 사용될 변수, 1부터 n포함한 범위를 i에 순회하면서, n에 주어진 값이 i를 나누어떨어지는지 확인한다. 나누어떨어지는 경우, 그 i값을 answer에 하나씩 더한다.

👻 다른 사람 풀이 해석

class Solution 
{
    fun solution(n: Int): Int 
    {
        var answer = 0

        answer = (1..n).filter { n % it == 0 }.sum()

        return answer
    }
}

충격적, 아직 배울 문법이 너무 많네요 😅 여기서 고차함수를 사용하여 더 간결하게 작성할 수 있다.

1..n
1부터 n까지의 범위를 생성한다.
.filter { n % it == 0 }
위 범위 내에서 n을 나누어떻어지게 하는 값들을 필터링한다.(n의 약수들을 추출)
.sum()
위에서 필터링한 값들이 합을 계산하고 answer에 할당한다.

0개의 댓글