https://school.programmers.co.kr/learn/courses/30/lessons/136798
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;
}
'C++ Algorithm & Study > C++ & Algorithm Strategies' 카테고리의 다른 글
[Programmers] 두 개 뽑아서 더하기 (0) | 2023.01.31 |
---|---|
[Programmers] 시저 암호 (0) | 2023.01.30 |
[Programmers] 멀리 뛰기 (0) | 2023.01.24 |
[Programmers] 행렬의 곱셈 (0) | 2023.01.23 |
[Programmers] 카펫 (0) | 2023.01.21 |