데이터 엔지니어링 정복/Algorithm

[수학,구현] 프로그래머스 - 약수의 개수와 덧셈(77884)

eeaarrtthh 2022. 12. 29. 01:37
728x90
반응형

-문제

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

 

프로그래머스

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

programmers.co.kr

 

-내 풀이 자바

처음에 규칙을 찾으려고 노력했지만 결국 찾지 못하고 일일이 약수의 개수를 찾아가면서 풀었다.

 

첫 번째 for문에서 left~right 순회돌고

첫 번재 for문의 안에서 1~i까지 돌면서 0으로 나누어 떨어지는 값들을 찾는다.

찾게되면 cnt개수를 올려주고

 

중첩 for문이 다 돌고나서 cnt가 짝수인지 홀수인지 판별해서 answer에 + - 해준다.

class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        for( int i=left; i<=right; i++ ) {
            int cnt = 0;
            for( int j=1; j<=i; j++ ) {
                if( i%j==0 ) cnt++;
            }
            
            if( cnt%2==0 ) answer += i;
            else answer -= i;
        }
        return answer;
    }
}

 

제곱근을 이용해서 푼 사람도 있었다.. 난 규칙성을 못찾았는데 대박이군

728x90
반응형