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;
}
