포스트

프로그래머스 — CodeKata 17

문제 요약 — 프로그래머스 입문 문제 — 기초 구현 풀이

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

약수의 개수가 짝수면 그 수를 더하고, 홀수면 빼는 문제. left부터 right까지 각 수마다 2부터 자기 자신까지 나머지 연산으로 약수를 직접 세고(약수 1은 count = 1 초기값으로 미리 포함), 개수의 홀짝에 따라 answer에 더하거나 뺐다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//https://school.programmers.co.kr/learn/courses/30/lessons/77884

using namespace std;

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

핵심 요약 — 약수 개수는 2부터 i까지 나머지 연산으로 세면 되고, 약수 1을 초기값 count = 1로 처리하면 루프 시작을 2로 당길 수 있다. 이후 count % 2 홀짝 분기로 더할지 뺄지 결정한다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.