코틀린/코딩테스트

코딩테스트 [약수의 합]

정혜현 2024. 6. 27. 10:12

문제

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

 

 

 

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12928

 


 

풀이

1. 접근

1.1 관찰

약수를 더해서 반환하는 문제

입력 : 정수

출력 : 정수

 

1.2 계획 

n을 나눠서 조건에 따라 반복문으로 더해야겠다.

 

 

 

 

 

2. 시행착오

2.1 시도

class Solution {
    fun solution(n: Int): Int {
        var answer = 0
        for(i in 1..n) {
            if(n % i == 0) answer += i
        }
        return answer
    }
}

 

검증결과 : 성공

코드를 줄일 수 있는 방법을 찾아보다가 범위 표현식도 표현식이라 단독으로 쓸 수 있다는 걸 알게돼서 앞으로 유용하게 사용되겠다.

class Solution {
    fun solution(n: Int): Int = (1..n).filter{ n % it == 0 }.sum()
}

 

 

 


 

회고

 

 

오늘 스크럼에서 우연하게도 팀원 4명이 약수 및 소수 문제를 풀었는데 그 안에서 filter를 활용하여 기억에 남았다. for문을 쓸 수 있을 때 filter 사용을 고려해볼 것!