728x90
반응형
문제 풀기 전 생각 :
/*
약수의 숫자가 짝수인지 판별하는 함수를 만든다.
left부터 right까지 반복마다
인수판별 함수를 이용해 짝수라면 해당 숫자를 더하고
아니라면 해당 숫자를 감소시킨다.
*/
#include <string>
#include <vector>
using namespace std;
int count_insu(int n){
int count = 0;
for(int i=1 ; i<=n ; i++){
if( n%i == 0 ) count++;
}
return count;
}
int solution(int left, int right) {
int answer = 0;
for(int i=left ; i<=right ; i++){
if(count_insu(i)%2 == 0) answer += i;
else answer -= i;
}
return answer;
}
https://programmers.co.kr/learn/courses/30/lessons/77884
풀 때 어려웠던 점 또는 느낀점 :
어려운 점은 없었다.
준비운동 느낌의 문제였다.
개선방안 :
int sign(int n, int count = 1) {
for (int i = 1, last = n >> 1; i <= last; ++i) if (n % i == 0) ++count;
return count & 1 ? -1 : 1;
}
int solution(int a, int b) { return a > b ? 0 : sign(a)*a + solution(a + 1, b); }
이 코드는 재귀함수로 짠듯하다.
신박하네.
#include <vector>
using namespace std;
int solution(int left, int right) {
int answer = 0;
int count = 2;
int check = 2;
if(left == 1){
answer -= left;
left++;
}
for(left ; left <= right ; left++){
for(count ; count < left ; count++){
if(left % count == 0) check++;
}
(check & 1) ? answer -= left : answer += left;
check = 2;
count = 2;
}
return answer;
}
이 코드는 함수를 따로 안 만들고
접근법은 비슷한거 같다!
728x90
반응형
'Problem Solving' 카테고리의 다른 글
[C++] [백준 2164] 카드2 (0) | 2021.07.25 |
---|---|
[C++] [프로그래머스] 방문 길이 (0) | 2021.07.25 |
[C++] [백준 2941] 크로아티아 알파벳 (0) | 2021.07.25 |
[C++] [LeetCode 125] Valid Palindrome (pps 5-6) (0) | 2021.07.22 |
[C++] [LeetCode 412] Fizz Buzz (pps 5-5) (0) | 2021.07.22 |
댓글