코딩 테스트/Level 1
약수의 개수와 덧셈
컴닥
2021. 7. 19. 22:53
반응형
https://programmers.co.kr/learn/courses/30/lessons/77884
코딩테스트 연습 - 약수의 개수와 덧셈
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주
programmers.co.kr
def solution(left, right):
answer = 0
for each in range(left, right + 1):
if count_divisor(each):
answer += each
else:
answer -= each
return answer
def count_divisor(number):
count = 0
for each in range(1, number + 1):
if number % each == 0:
count += 1
return count % 2 == 0
약수의 개수가 홀수인 수는 제곱근이 정수인 수입니다.
2: 1, 2
4: 1, '2', 4
8: 1, 2, 4, 8
16: 1, 2, '4', 8, 16
def solution(left, right):
answer = 0
for each in range(left, right + 1):
if (temp := each ** 0.5) - int(temp) > 0:
answer += each
else:
answer -= each
return answer
def solution(left, right):
return sum(each if (temp := each ** 0.5) - int(temp) > 0 else - each for each in range(left, right + 1))
PEP위반
solution = lambda left, right: sum(each if (temp := each ** 0.5) - int(temp) > 0 else - each for each in range(left, right + 1))
golang
import "math"
func solution(left int, right int) (sum int) {
for i := left; i <= right; i++ {
temp := math.Sqrt(float64(i))
if temp-math.Trunc(temp) > 0 {
sum += i
} else {
sum -= i
}
}
return
}
Java
class Solution {
public int solution(int left, int right) {
int answer = 0;
for (var i = left; i < right + 1; i++) {
var count = 0;
for (var j = 1; j < i + 1; j++) {
if (i % j == 0) {
count++;
}
}
if (count % 2 == 0) {
answer += i;
} else {
answer -= i;
}
}
return answer;
}
}
class Solution {
public int solution(int left, int right) {
int answer = 0;
for (var i = left; i < right + 1; i++) {
var temp = Math.sqrt(i);
answer += (temp - (int) temp != 0) ? i : -i;
}
return answer;
}
}
반응형