[프로그래머스/코딩테스트/level1] 약수의 개수와 덧셈 문제풀이

Yuyy·2021년 7월 14일
0

CodingTest_level1

목록 보기
2/8

문제

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

제한 조건
1 ≤ left ≤ right ≤ 1,000


✍문제풀이(C언어)

🤔약수란? 어떤 수나 식을 나누어 나머지가 없이 떨어지는 수나 식
ex) 4의 약수
4/1 = 4(나머지 : 0)
4/2 = 2(나머지 : 0)
4/3 = 1.3333...(나머지 : 1.xxx)
=> 4의 약수는 1,2 이다.

문제 정리

  1. 매개변수 left, right
  2. left와 right 사이 수들 중 약수의 개수가 짝수인 수 더하기
  3. 홀수인 수는 빼기
  4. 덧셈 뺄셈 한 총 값 반환
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int left, int right) {
    int answer = 0;
    int cnt; 					// 수들의 약수의 갯수를 count하는 변수
        for(int i = left; i <= right; i++){     // left와 right 사이 수들을 구하기 위한 반복문
            cnt =0; 			     
            for(int j = 1; j <= i; j++){
               if(i%j == 0) cnt++; 		// i에서 j로 나눈 나머지 값이 0이면 cnt증가
            }    
            if(cnt %2 == 0) answer += i; 	// 약수의 갯수(cnt)가 짝수라면 i값 더하기 
            else answer -= i; 			// 홀수라면 i값 빼기
        }        
    return answer;
}



                      🧐궁금한 점 있으시면 댓글 남겨주세요!!🧐
profile
Junior Developer

0개의 댓글