본문 바로가기
문제풀이/프로그래머스

약수의 개수와 덧셈 / 프로그래머스 연습문제 / programmers / level1 / Java

by RUCKUS 2021. 6. 11.

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

 

코딩테스트 연습 - 약수의 개수와 덧셈

두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주

programmers.co.kr


이번 문제도 생각보다 쉽게 풀었다.

약수의 개수를 구하고 해당 약수의 개수가 짝수인지 홀수인지만 구분해주면 되는 부분이었다.

 

약수를 구하여 짝, 홀을 리턴하는 메소드를 별도로 만들어 코드에 간결함을 더해보았다.

 

[결과코드]

public class divisor {

	public static void main(String[] args) {
		
		solution(24, 27);
		
	}
	
    public static int solution(int left, int right) {
        int answer = 0;
        
        // left ~ right 까지
        for (int i = left; i <= right; i++) {
			
        	// 만약 i가 약수라면 더하고 아니면 뺀다
        	if (getDivisor(i)) {
        		answer += i;
        	} else {
        		answer -= i;
        	}
        	
		}
        return answer;
    }
    
    private static boolean getDivisor(int n) {
    	
    	int count = 0;
    	
    	// 1~n 까지 n을 나눠서 떨어지면 count를 더해준다.
    	for (int i = 1; i <= n; i++) {			
    		if (n % i == 0) {
    			count++;
    		}   		
		}
    	
    	// 카운트가 짝수면 true, 홀수면 false
    	if (count % 2 == 0) {
    		return true;
    	} else {
    		return false;
    	}
    	
    	
    }
	
}

 

이런 문제만 나왔으면 좋겠다...는 현실은 그렇지 않지. 힘내자.

 


[깃허브]

https://github.com/RUCKUSJERRY/practiceOfAlgorithm/blob/main/Prs_Pratice/src/com/level01/divisor.java

 

RUCKUSJERRY/practiceOfAlgorithm

Contribute to RUCKUSJERRY/practiceOfAlgorithm development by creating an account on GitHub.

github.com