C++ Algorithm & Study/C++ & Algorithm Strategies

[Programmers] 기사단원의 무기

GameChoi 2023. 1. 25. 21:14

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

 

프로그래머스

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

programmers.co.kr

0. Headers

using namespace std;

1. 알고리즘

 - 문제를 읽어보면 약수를 구하는 방법을 생각해야함

   - 약수를 구하는 방법은 1부터 그 수 까지 나눴을 때 0으로 떨어지는 수

     - 그러나 잘 생각해보면 약수는 그 수에서 절반을 나눈 다음 값을 넘어가지 않음

       - 12 (1, 2, 3, 4, 6, 12)

       - 24 (1, 2, 3, 4, 6, 12, 24) ...

     - 따라서 약수를 구하고 문제를 보면 limit보다 크면 power만큼 더하고 아니면 약수의 개수만큼 더하면 됨

using namespace std;

int solution(int number, int limit, int power) {
    int answer = 0;

    for (int i = 1; i <= number; i++)
    {
        int count = 1;
        for (int j = 1; j <= (i / 2); j++)
            if (i % j == 0) count++;
        count > limit ? answer += power : answer += count;
    }

    return answer;
}

2. 완성 코드

using namespace std;

int solution(int number, int limit, int power) {
    int answer = 0;

    for (int i = 1; i <= number; i++)
    {
        int count = 1;
        for (int j = 1; j <= (i / 2); j++)
		    if (i % j == 0) count++;
        count > limit ? answer += power : answer += count;
    }

    return answer;
}