링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12924
이중반복문을 사용해서 1부터 n까지 n에 해당하는 수가 있는지 확인하고, 2부터 n까지 또 확인하는 식으로 풀었다.
하지만 문제를 풀면서도 매우 비효율적이라고 생각했기에 풀고 다른 사람 코드를 봤더니 약수를 통해 문제를 푸는 방법이 있었다.
해당 코드도 첨부하겠다.
class Solution {
public int solution(int n) {
int answer = 1;
int count = 0;
for (int i = 1; i < n; i++) {
for (int j = i; j < n; j++) {
if (count == n) {
answer++;
count = 0;
break;
} else if (count > n) {
count = 0; break;
}
else count += j;
}
}
return answer;
}
}
class Solution {
public int solution(int n) {
int answer = 0;
for (int i = 1; i <= n; i += 2)
if (n % i == 0)
answer++;
return answer;
}
}
홀수만 골라서 해당 수와 홀수를 나눈 나머지가 0 이라면. 약수라면 정답 개수를 올려준다.