Programmers | 코딩테스트 연습 - 약수의 개수와 덧셈(자바)
2023. 4. 21. 09:13ㆍ공부/Programmers
프로그래머스 Lv.1 약수의 개수와 덧셈
JAVA
class Solution {
public int solution(int left, int right) {
int answer = 0;
int cnt = 0; //약수의 개수를 카운트할 변수
for(int i = left; i < right+1; i++){ //i는 left~right까지
cnt = 0; //0으로 초기화
for(int j = 1; j < i+1; j++){
if(i % j == 0) cnt++; //i를 1부터 i까지 반복하여 약수이면 cnt 증가
}
// cnt가 짝수면? i, 홀수면? -i를 answer에 더한다.
answer += cnt % 2 == 0? i : i * (-1);
}
return answer;
}
}
반복문을 사용하여 풀었으나, 시간이 오래걸릴 것 같다.😭
다른 사람의 풀이
class Solution {
public int solution(int left, int right) {
int answer = 0;
for (int i=left;i<=right;i++) {
//제곱수인 경우 약수의 개수가 홀수
if (i % Math.sqrt(i) == 0) {
answer -= i;
}
//제곱수가 아닌 경우 약수의 개수가 짝수
else {
answer += i;
}
}
return answer;
}
}
제곱수 = 약수의 개수가 홀수가 키포인트인 것 같다.
'공부 > Programmers' 카테고리의 다른 글
Programmers | 코딩테스트 연습 - 최대공약수와 최소공배수(자바), 유클리드 호제법, 최소공배수 구하기 (1) | 2023.04.21 |
---|---|
Programmers | 코딩테스트 연습 - 행렬의 덧셈(자바) (0) | 2023.04.21 |
Programmers | 코딩테스트 입문 - 겹치는 선분의 길이(자바) (0) | 2023.04.04 |
Programmers | 코딩테스트 입문 - 안전지대(자바) (0) | 2023.04.04 |
Programmers | 코딩테스트 입문 - 문자열 계산하기(자바,파이썬), eval (0) | 2023.01.06 |