프로그래머스

[프로그래머스 C++] 약수의 개수와 덧셈

민봉이 2022. 10. 17. 23:35
반응형

링크

https://school.programmers.co.kr/learn/courses/30/lessons/77884?language=cpp 

 

프로그래머스

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

programmers.co.kr

문제 설명 및 제한 조건

나의 코드

#include <string>
#include <vector>
#include <iostream>

using namespace std;

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

채점 결과

다수 코드

int sign(int n, int count = 1) {
    for (int i = 1, last = n >> 1; i <= last; ++i) if (n % i == 0) ++count;
    return count & 1 ? -1 : 1;
}
int solution(int a, int b) { return a > b ? 0 : sign(a)*a + solution(a + 1, b); }
반응형