문제
프로그래머스 문제
내 풀이
- 루프 한 번만 돌리려고 while문에 index를 2개 돌리는 방식을 취했다.
function solution(n) {
let result = 1;
if(n < 3) return result;
if(n === 3) return 2;
const arr = Array(n).fill(1).map((num, idx) => num + idx);
let i = 0;
let j = 1;
let sum = arr[i] + arr[j];
while(i <= Math.ceil(n/2)){
j++;
if(sum >= n){
if(sum === n){
result++;
}
i++;
j = i+1;
sum = arr[i];
}
sum += arr[j];
}
return result;
}
개선점
- 아래의 풀이는 숫자가 가진 홀수 약수의 개수가 정답이라고 하는데 잘 이해도 안 가고 나보고 설명하라고 하면 못 할 거 같아서 그냥 이런 풀이도 있구나까지만!
function expressions(num) {
var answer = 0;
for(var i=1; i<=num; i++) {
if (num%i == 0 && i%2 == 1)
answer++
}
return answer;
}