Coding Test/programmers

[프로그래머스] 기사단원의 무기 c++

owls 2023. 1. 17. 20:29
728x90

문제 설명

기사단원의 수를 나타내는 정수 number와 이웃나라와 협약으로 정해진 공격력의 제한수치를 나타내는 정수 limit와 제한수치를 초과한 기사가 사용할 무기의 공격력을 나타내는 정수 power가 주어졌을 때, 무기점의 주인이 무기를 모두 만들기 위해 필요한 철의 무게를 return 하는 solution 함수를 완성하시오.

제한 사항

  • 1 ≤ number ≤ 100,000
  • 2 ≤ limit ≤ 100
  • 1 ≤ power ≤ limit

입출력 예

number limit power result
5 3 2 10
10 3 2 21

풀이

약수의 개수를 구할 줄 아는지 확인하는 문제이다.

#include <string>
#include <vector>
#include <cmath>

using namespace std;

int divisor(int num){
    int cnt = 0;
    for(int i = 1; i <= sqrt(num); i++){
        if( num % i == 0){
            cnt++;
            if( i != num / i){
                cnt++;
            }
        }
    }
    return cnt;
}

int solution(int number, int limit, int power) {
    int answer = 0;
    for(int i = 1; i <= number; i++){
        int n = divisor(i);
         answer += n > limit ? power : n;
    }
    return answer;
}

 

728x90