코딩 테스트/프로그래머스 level2

숫자의 표현

fullfish 2022. 9. 8. 14:39

코드

function solution(n) {
  let count = 0;
  for (let i = 0; i <= n; i++) {
    let sum = 0;
    for (let j = i + 1; j <= n; j++) {
      sum += j;
      if (sum === n) {
        count++;
        break;
      }
    }
  }
  return count;
}

처음에는 무식하게 이중for문으로 모두 순회를 하였더니

당연하게도 효율성에서 통과를 못했다

 

잘 모르곘어서 힌트를 보니까

2가지를 발견했는데

 

자연수 n을 연속한 자연수의 합으로 표현할 수 있는 개수는 n의 약수중 홀수의 개수와 같다

function solution(n) {
  let count = 0;
  for (let i = 1; i <= n; i++) {
    if (n % i === 0 && i%2 == 1) count++;
  }
  return count;
}

또는

자연수 n을 i로 나눈 나머지가 0이면 count++ 그 후에 n에 i를 뺀다 그리고 count값

function solution(n) {
  let count = 0;
  for (let i = 1; i <= n; i++) {
    if (n % i === 0) count++;
    n -= i;
  }
  return count;
}

'코딩 테스트 > 프로그래머스 level2' 카테고리의 다른 글

다리를 지나는 트럭  (0) 2022.09.09
피보나치 수  (0) 2022.09.08
올바른 괄호  (0) 2022.09.08
최솟값 만들기  (0) 2022.09.08
이진 변환 반복하기  (0) 2022.09.08