문제
프로그래머스 코딩테스트 연습 - 약수의 개수와 덧셈(Level 1)
https://programmers.co.kr/learn/courses/30/lessons/77884
사용 알고리즘
- Brute force
풀이
left부터 right까지 각 수에 대해 약수의 개수를 체크해본다.
나의 코드
#include <string>
#include <vector>
using namespace std;
int solution(int left, int right) {
int sum = 0;
for(int i=left;i<=right;i++){
int cnt=0;
for(int j=1;j<=i/2;j++) if(i%j==0) cnt++;
sum+=((cnt%2) ? i:(-i));
}
return sum;
}
남의 코드(좋아요 최다 코드)
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); }
728x90
'PS > Programmers' 카테고리의 다른 글
프로그래머스 코딩테스트 연습 - 약수의 합(Level 1) (0) | 2021.07.20 |
---|---|
프로그래머스 코딩테스트 연습 - 소수 만들기(Level 1) (0) | 2021.07.20 |
프로그래머스 코딩테스트 연습 - 두 정수 사이의 합(Level 1) (0) | 2021.07.11 |
프로그래머스 코딩테스트 연습 - 서울에서 김서방 찾기 (Level 1) (0) | 2021.06.29 |
프로그래머스 코딩테스트 연습 - 같은 숫자는 싫어 (Level 1) (0) | 2021.06.26 |