본문 바로가기
Java

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

by hunbal 2023. 10. 27.
SMALL

문제 설명 및 예시

주어진 두 숫자 내의 숫자들 중 약수의 개수가 짝수면 그 수를 더하고, 홀수면 빼는 함수를 만드는 문제이다.


풀이

우선 약수의 개수를 세는 메서드를 하나 만들고, 주어진 숫자들 내에서 반복문을 통해 계산하는 방법을 생각했다.

 

1. 약수의 개수를 세는 countDivisors 메서드를 생성한다.

2. 1부터 특정 숫자까지 for문을 돌려 나머지가 0이 되게 하는 수가 존재할 때마다 count를 하나씩 늘려간다.

    ex) n이 6이면 1,2,3,4,5,6 중 1,2,3,6이 6과 나누어 떨어지는 약수이므로 4개를 반환할 것이다.

 

3. 결과를 반환할 answer 변수를 정의한다.

4. 주어진 수 left , right 내에서 반복문과 함께 앞서 정의했던 divisorCount 메서드를 호출한다.

5. left 부터 시작해 약수의 개수가 짝수일 시 그 수를 더한다.

    ex) left가 14라면 약수는 1,2,7,14로 짝수가 되므로 더함

6. 약수의 개수가 홀수일 시 그 수를 뺀다.

 

약수에 대한 개념을 알고있고, 그것을 구하는 메서드를 정의할 수 있다면 어렵지 않게 해결할 수 있는 문제였다.

 

다른 정답자의 풀이인데 흥미롭게도 Math.sqrt() 함수로 제곱수 여부를 판단해 값을 도출했다.

4 , 9 , 16 , 25 처럼 제곱수인 경우에는 약수가 [1 , 제곱근 , 제곱수] 이므로 약수의 개수는 무조건 홀수가 되고, 아닌 경우는 짝수이므로 굉장히 간단한 정의로 문제를 해결했다고 볼 수 있다.

제곱수를 활용하는건 생각 못했는데, 위의 풀이를 보고 나니 시야가 넓어진 느낌이 든다.

 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

 

댓글