Krononberg

프로그래머스) 월간코드챌린지2_약수의 개수와 덧셈 c++ 본문

개발 로그/알고리즘

프로그래머스) 월간코드챌린지2_약수의 개수와 덧셈 c++

k._. 2021. 9. 3. 12:09

다른 사람의 풀이에서 가장 좋아요를 많이 받은 분의 코드를 공부하고, 필사해보았다.

 

핵심

1. 짝수여부를 bit연산자 & 1 로 판단.

2. 재귀호출 사용.

 

#include <string>
#include <vector>

using namespace std;

int sign(int x, int count = 0) {
    for (int i = 1; i <= x; i++) if(x % i == 0) count++;
    return count & 1 ? -1 : 1;
}

int solution(int left, int right) {
    return left > right ? 0 : sign(left) * left + solution(left + 1, right);
}