숫자의 표현 ( Level 4, JavaScript )

문제

수학을 공부하던 민지는 재미있는 사실을 발견하였습니다. 그 사실은 바로 연속된 자연수의 합으로 어떤 숫자를 표현하는 방법이 여러 가지라는 것입니다. 예를 들어, 15를 표현하는 방법은
(1+2+3+4+5)
(4+5+6)
(7+8)
(15)
로 총 4가지가 존재합니다. 숫자를 입력받아 연속된 수로 표현하는 방법을 반환하는 expressions 함수를 만들어 민지를 도와주세요. 예를 들어 15가 입력된다면 4를 반환해 주면 됩니다.

풀이

function expressions(num) {
  let result = 0, sum = 0, j;
    for ( let i = 1; i <= num; i++ ) {
    sum = 0, j = i;
      while ( sum <= num ) {
      sum += j;
      if ( sum === num ) result++;
      j++
    }
  }
  return result;
}

이중포문으로 sum과 num이 같을 때 결과값에 1씩 더해서 결과값을 리턴

다른 사람의 풀이

function expressions(num) {
    var answer = 0;

  for(var i=1; i<=num; i++) {
    if (num%i == 0 && i%2 == 1)
      answer++
  }
    return answer;
}

신박하네 어떻게 접근한건지..

머리가 안돌아가니까 나중에 조금더 고민해봐야겠다.


+ Recent posts