無限

몸은 현실 마음은 낭만

Develop & Journal

코딩테스트 연습

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

알파 조 2024. 3. 24. 18:27
728x90
반응형
SMALL

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

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


제한사항

  • 1 ≤ left ≤ right ≤ 1,000

입출력 예

left right result

13 17 43
24 27 52

정답률이 80%가 넘는 쉬운 문제인 걸로…

 

알고리즘

  1. left부터 right까지 반복하는 반복문을 만든다.
  2. 값을 하나씩 약수 함수를 통해 약수의 개수를 구해준다
  3. 어떠한 값의 약수의 개수가 양수이면 더해주고, 홀수이면 빼준다.
  4. 최종적으로 값을 리턴해준다.

 

코드

#include <string>
#include <vector>

using namespace std;

int 약수(int a){
    int cnt=0;
    
    for(int i=1;i<=a;i++){
        if(a%i==0)
            cnt++;
    }
    return cnt;
}
int solution(int left, int right) {
    int answer = 0;

    for(int i=left; i<=right;i++){
        if(약수(i)%2==0)
            answer+=i;
        else
            answer-=i;
    }
    
    return answer;
}
반응형
LIST