728x90
반응형
2021.11.06
66번째 포스팅
입사 244일차.
코테 문제풀이 5주차 1번 문제
0. 문제
① 월간 코드 챌린지 시즌2 : 약수의 개수와 덧셈
② 설명
문제설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. |
③ 링크
1. 접근방법
생각해낸 방법은 1가지
① 문제에서 설명한 그대로 풂
2. 풀이
① 접근방법 : ①
② 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
class Solution {
/*
* 시작시간 : 20:50
* 종료시간 : 21:14
*/
public int solution(int left, int right) {
int answer = 0;
for (int i = left; i <= right; i++) {
answer += calDivisor(i);
}
return answer;
}
public int calDivisor(int n) {
// 1. 제곱근 찾기
int squareRoot = (int)Math.floor(Math.sqrt(n));
// 2. 약수의 갯수 찾기
int divisorCnt = 0;
for (int i = 2; i <= squareRoot; i++) {
if (n % i == 0) divisorCnt++;
}
// 3. 제곱근까지 for문을 돌렸으므로 *2
divisorCnt *= 2;
// 4. 제곱수일 경우 -1
if (Math.sqrt((double)n) == (double)squareRoot) {
divisorCnt--;
}
int answer = 0;
if (divisorCnt % 2 != 0) {
n *= -1;
}
answer = n;
return answer;
}
}
|
cs |
3. 결과
4. 주의사항
① 제곱근까지 for문을 사용해서 약수의 갯수를 구해 시간복잡도를 줄일 것
② 제곱수인지 아닌지에 대한 판별
728x90
반응형
'코딩테스트' 카테고리의 다른 글
[코테/JAVA] 스택/큐 : 기능개발 (0) | 2021.11.08 |
---|---|
[코테/JAVA] 연습문제 : 124 나라의 숫자 (0) | 2021.11.06 |
[코테/JAVA] 2019 KAKAO BLIND RECRUITMENT : 실패율 (0) | 2021.11.01 |
[코테/JAVA] 위클리 챌린지 : 1주차_부족한 금액 계산하기 (0) | 2021.10.24 |
[코테/JAVA] 프로그래머스 : K번째수 (0) | 2021.10.17 |
댓글