문제
https://programmers.co.kr/learn/courses/30/lessons/77884
코딩테스트 연습 - 약수의 개수와 덧셈
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주
programmers.co.kr
C++로만 풀다가 자바로 푼 이유는 코딩테스트가 어떻게 진행되는지 궁금해서 우아한 테크캠프 5기에 지원했는데 응시 언어가 자바랑 코틀린 밖에 없어서 며칠 동안 적응할 겸 자바로만 알고리즘 문제를 풀 생각이다.
풀이
문제 자체는 쉽게 접근할 수 있지만 범위가 좀 있다보니 효율적으로 약수의 개수를 구해주지 않으면 아마 시간초과나서 터질 거 같다고 생각했다.
그래서 k % i == 0을 만족(일반적인 약수 개수 구하는 방식) + k % i == 0을 만족하고 i * i가 k보다 작으면 i * i도 k의 약수임이 확실하니까 개수에 포함시키는 방식을 선택하여 효율적으로 약수를 구할 수 있었고 문제의 의도대로 답을 리턴해주었다.
코드
class Solution {
public int solution(int left, int right) {
int answer = 0;
// Get
for(int k = left; k <= right; k++) {
int temp = 0;
for(int i = 1; i * i <= k; i++) {
if(k % i == 0) {
temp++;
if(i * i < k) {
temp++;
}
}
}
// Result Calculate
if(temp % 2 == 0) {
answer += k;
} else {
answer -= k;
}
}
System.out.println(answer);
return answer;
}
}
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 프로그래머스 Level2 방문 길이 Java (0) | 2022.05.04 |
---|---|
[프로그래머스] 프로그래머스 Level1 두 개 뽑아서 더하기 Java (0) | 2022.05.04 |
[프로그래머스] 프로그래머스 Level3 멀리 뛰기 C++ (0) | 2022.05.03 |
[프로그래머스] 프로그래머스 Level3 2 x n 타일링 C++ (0) | 2022.05.03 |
[프로그래머스] 프로그래머스 Level1 크레인 인형뽑기 게임 C++ (카카오 코딩테스트) (0) | 2022.05.03 |
문제
https://programmers.co.kr/learn/courses/30/lessons/77884
코딩테스트 연습 - 약수의 개수와 덧셈
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주
programmers.co.kr
C++로만 풀다가 자바로 푼 이유는 코딩테스트가 어떻게 진행되는지 궁금해서 우아한 테크캠프 5기에 지원했는데 응시 언어가 자바랑 코틀린 밖에 없어서 며칠 동안 적응할 겸 자바로만 알고리즘 문제를 풀 생각이다.
풀이
문제 자체는 쉽게 접근할 수 있지만 범위가 좀 있다보니 효율적으로 약수의 개수를 구해주지 않으면 아마 시간초과나서 터질 거 같다고 생각했다.
그래서 k % i == 0을 만족(일반적인 약수 개수 구하는 방식) + k % i == 0을 만족하고 i * i가 k보다 작으면 i * i도 k의 약수임이 확실하니까 개수에 포함시키는 방식을 선택하여 효율적으로 약수를 구할 수 있었고 문제의 의도대로 답을 리턴해주었다.
코드
class Solution {
public int solution(int left, int right) {
int answer = 0;
// Get
for(int k = left; k <= right; k++) {
int temp = 0;
for(int i = 1; i * i <= k; i++) {
if(k % i == 0) {
temp++;
if(i * i < k) {
temp++;
}
}
}
// Result Calculate
if(temp % 2 == 0) {
answer += k;
} else {
answer -= k;
}
}
System.out.println(answer);
return answer;
}
}
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 프로그래머스 Level2 방문 길이 Java (0) | 2022.05.04 |
---|---|
[프로그래머스] 프로그래머스 Level1 두 개 뽑아서 더하기 Java (0) | 2022.05.04 |
[프로그래머스] 프로그래머스 Level3 멀리 뛰기 C++ (0) | 2022.05.03 |
[프로그래머스] 프로그래머스 Level3 2 x n 타일링 C++ (0) | 2022.05.03 |
[프로그래머스] 프로그래머스 Level1 크레인 인형뽑기 게임 C++ (카카오 코딩테스트) (0) | 2022.05.03 |