[프로그래머스] 약수의 개수와 덧셈

이한솔·2023년 9월 27일
0

프로그래머스_레벨1

목록 보기
18/65
post-thumbnail

✨️ 문제 설명

: 두 정수 left와 right가 매개변수로 주어질 때, left부터 right의 모든 수 중에서 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수를 뺀 수를 return하는 함수 완성

🎲 자바 풀이

  • 첫번째 풀이
  • class Solution {
        public int solution(int left, int right) {
            int answer = 0;
            for (int num = left; num <= right; num++) {
                int sqrt = (int) Math.sqrt(num);
                if (sqrt * sqrt == num) {
                    answer -= num;
                } else {
                    answer += num;
                }
            }
            return answer;
        }
    }
    

  • 두번째 풀이 : stream 사용
  • import java.util.stream.IntStream;
    
    class Solution {
        public int solution(int left, int right) {
            int answer = IntStream.range(left, right + 1)
                .map(num -> {
                    int sqrt = (int) Math.sqrt(num);
                    return sqrt * sqrt == num ? -num : num;
                })
                .sum();
            return answer;
        }
    }
    

    풀이 설명

    : 제곱수의 약수의 개수는 항상 홀수이므로, 제곱수인 경우는 - 그 외는 더해서 답을 구한다.
    profile
    개인 공부용

    0개의 댓글