프로그래머스

[프로그래머스_Kotlin] 약수의 개수와 덧셈

내손은개발 🐾 2024. 1. 29. 13:49
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한사항 입출력 예

 

내 생각

2중 for 문으로 left .. right까지 한 뒤 하나마다 약수의 갯수를 구해 짝수이면 더하고 홀수면 뺀다

 

내 풀이
class Solution {
    fun solution(left: Int, right: Int): Int {
        var answer: Int = 0

        for (i in left..right) {
            var cnt = 0
            for (j in 1..i) {
                if (i % j == 0) {
                    cnt += 1
                }
            }
            if (cnt % 2 == 0) answer += i else answer -= i
        }
        
        return answer
    }
}​

다른 사람의 풀이
class Solution {
    fun solution(left: Int, right: Int): Int {
        return (left..right).map { i -> if ((1..i).filter { i % it == 0 }.size % 2 == 0) i else -i }.sum()
    }
}​

 

 

filter와 map을 잘 사용하면 코드를 간결하게 사용할 수 있으니까 더 연습해야겠다.