Algorithm

[Programmers] 약수의 개수와 덧셈

Y06 2022. 3. 14. 20:16

[문제]

https://programmers.co.kr/learn/courses/30/lessons/77884

 

코딩테스트 연습 - 약수의 개수와 덧셈

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

programmers.co.kr

[풀이]

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int left, int right) {
    int answer = 0;
    int count;
    
    for(int i=left; i <= right; i++){
        count=0;
        for(int j=1; j<=i; j++){
            if(i % j == 0){ count++; }
        }
                        
        if(count % 2 == 0){answer += i;}
        else answer -= i;
    }

    return answer;
}

int main(){
    int left=0;
    int right=0;
    
    scanf("%d %d", &left, &right);
    
    solution(left, right);
}

- 풀 때 count를 for문 안에서 초기화 해야 한다. 이 사실을 몰라서 고생했다.

- 소수를 구할 때는 i % j == 0 이라는 식을 사용한다.