[Study] 프로그래머스 lv.1 약수의 개수와 덧셈

ayboori·2023년 6월 20일
0

Java Study

목록 보기
5/34

풀이 로직

약수 구하기 (함수) - 1부터 자기 자신까지의 수로 나누어 몫이 0이면 count +1을 한다

덧셈, 뺄셈 하기 - 위 함수의 리턴값이 짝수면 덧셈, 홀수면 뺄셈을 한다

내가 작성한 코드

class Solution {
	public int solution(int left, int right) {
		int answer = 0; // 정답
		for (int i = left; i <= right; i++){ // 왼쪽 ~ 오른쪽 값
        if(countDivisor(i) %2 == 0) { // 짝수면 덧셈
            answer+= i;
        } else{ // 홀수면 뺄셈
            answer -= i;
        }
    }
    return answer;
}

// 약수의 갯수를 구하는 함수
public int countDivisor (int input){
    int count = 0; // 약수의 갯수를 세는 변수
    for(int i=1; i <= input; i++){
        if(input % i == 0) count ++; // 약수가 있을 경우 count ++
    }
    return count;
}
}
테스트 1 〉통과 (3.52ms, 73.8MB)
테스트 2 〉통과 (0.88ms, 77MB)
테스트 3 〉통과 (0.80ms, 74.7MB)
테스트 4 〉통과 (0.58ms, 73.1MB)
테스트 5 〉통과 (3.04ms, 71.8MB)
테스트 6 〉통과 (0.71ms, 83.3MB)
테스트 7 〉통과 (0.30ms, 76.2MB)

다른 사람이 작성한 코드

약수의 갯수를 구한다는 방식의 전환

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;
    }
}

피연산자가 어떤 수의 제곱일 경우, 약수의 갯수는 항상 홀수이다

참고 링크

profile
프로 개발자가 되기 위해 뚜벅뚜벅.. 뚜벅초

0개의 댓글