문제
두 정수 left와 right가 매개변수로 주어진다.
left부터 right까지의 모든 수들 중에서,
약수의 개수가 짝수인 수는 더하고,
약수의 개수가 홀수인 수는 뺀 수를
return 하도록 solution 함수를 완성한다.
제한 조건
1 ≤ left ≤ right ≤ 1,000
문제풀이(C언어)
#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;
}
'개발ING > CodingTest' 카테고리의 다른 글
[백준/2588번] 곱셈 (0) | 2022.05.01 |
---|---|
[프로그래머스] 문자열을 정수로 바꾸기 (0) | 2022.04.28 |
[백준/코딩테스트/10809번] 알파벳 찾기 (0) | 2022.03.31 |
[프로그래머스] x만큼 간격이 있는 n개의 숫자 문제풀이 (0) | 2022.03.21 |