코딩테스트

[프로그래머스] 약수의 개수와 덧셈 (Kotlin)

깨비도 2024. 5. 27. 20:37

약수의 개수와 덧셈

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

 

💡 풀이

class Solution {
    fun solution(left: Int, right: Int): Int {
        var answer: Int = 0
        
        for (i: Int in left .. right) {
            var cnt: Int = 0 // 각 수 마다의 약수의 개수의 합
            for(j: Int in 1 .. i) if(i % j == 0) cnt++ //약수의 개수 구한 것
            
            if(cnt % 2 == 0) answer += i else answer -= i // 약수가 짝수면 더하고 홀수면 빼는 식
        }
        
        return answer
    }
}
  1. left와 right 범위 안의 숫자 만큼 i 반복문을 돌린다.
  2. left부터 right까지의 각 숫자들의 약수를 구하기 위해 j 반복문을 돌린다.
  3. 숫자 i를 1부터 i까지의 숫자 j로 나누어 값이 떨어지면 1씩 더해 약수의 총 개수를 구한다.
  4. 만약 cnt가 짝수면 i숫자를 더하고 그렇지 않으면 i숫자를 뺀다.

오랜만에 문제를 풀어서 그런지 문법 자체는 항상 사용하던 익숙한 것들이었지만 식을 짜는 데에 많이 어려움을 겪었다. 반복문을 두 번 돌리고, 그 안에서 i와 j 값이 헷갈리기 시작해서 해설을 잘 풀어 정리해보는 것으로 복습한다.

다시 열심히 공부 하자!