코딩테스트

프로그래머스 | 약수의 개수와 덧셈 | Kotlin

다시은 2024. 1. 5. 09:21

내 풀이

class Solution {
    fun solution(left: Int, right: Int): Int {
        var answer: Int = 0
        var count: Int = 0
        for(i in left..right){
            for(ii in 1..i){
                if(i %ii == 0) count++
            }
            if (count %2 ==0) answer += i else answer -= i
            count = 0
        } 
        return answer
    }
}

left 와 right 를 범위로 for문을 넣어서 약수가 나올때마다 변수 count 에 1씩 더해주고

총 count 가 짝수이면 덧셈 홀수이면 뺄셈을 해줬다. 그 뒤 for문을 반복하기 전에 count 값을 0으로 초기화했다.

한 번에 완성은 했는데 딱 봐도 복잡하다😒

 

 

다른 사람 풀이

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()
    }
}

분명히 아는 것들인데 왜 이렇게 해볼 생각을 못할까 😒😒

내가 count 변수를 새로 만들어서 개수를 구하고 짝,홀수 구분하고 있을 때 여기에서는 size로 한 번에 해결했다.

 

레벨 2까지 다 하고 처음부터 다시 봐봐야지