Problem Solving/구현

약수의 개수와 덧셈

윤재에요 2023. 11. 13. 21:22

https://school.programmers.co.kr/learn/courses/30/lessons/77884

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

레벨1

크게 어려운 문제는 아니지만 풀이법이 참신해서 올려본다.

 

약수의 개수가 짝수인지, 홀수 인지 구하는게 포인트인 문제이다.

나는 약수를 전부 찾아서 개수를 구했다.

 

그런데 모범답에서는 제곱근을 가지는 숫자는 약수가 홀수 이다. 왜냐하면 3의 경우 1,3 으로 한쌍이고 4의 경우 2의 제곱근이라 2 하나이기에 제곱근을 가지면 홀수 이다.

 

나의 코드

class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        for(int i =left;i<=right;i++){
            int n = 0;
            for (int j=1;j<=i;j++){
                if(i%j==0){
                    n+=1;
                }
            }
            if (n%2==0){
                System.out.println("+");
                System.out.println(i);
                answer+=i;
            }else{
                System.out.println("-");
                System.out.println(i);
                answer-=i;
            }
        }
            
        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;
    }
}
댓글수0