문제
정수 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 사용을 고려해볼 것!
'코틀린 > 코딩테스트' 카테고리의 다른 글
코딩테스트 [x만큼 간격이 있는 n개의 숫자] (0) | 2024.07.01 |
---|---|
코딩테스트 [나머지가 1이 되는 수 찾기] (0) | 2024.06.28 |
코딩테스트 [짝수와 홀수] (0) | 2024.06.27 |
코딩테스트 [문자열 뒤집기] (0) | 2024.06.26 |
코딩테스트 [삼각형의 완성조건 (1)] (0) | 2024.06.25 |