[프로그래머스] 숫자의 표현

DongEun·2023년 5월 29일
1
post-thumbnail

[level 2] 숫자의 표현 - 12924

문제 링크

문제 해설

성능 요약

메모리: 33.4 MB, 시간: 0.23 ms

구분

코딩테스트 연습 > 연습문제

채점결과

Empty

문제 설명

Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.

  • 1 + 2 + 3 + 4 + 5 = 15
  • 4 + 5 + 6 = 15
  • 7 + 8 = 15
  • 15 = 15

자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.

제한사항
  • n은 10,000 이하의 자연수 입니다.

입출력 예
n result
15 4
입출력 예 설명

입출력 예#1
문제의 예시와 같습니다.

풀이과정

1 => 1 										(1) : 1개
------------------------------------------------------------
2 => 1,2									(2) : 1개
------------------------------------------------------------
3 => 1,2,3									(1+2 , 3) : 2개
------------------------------------------------------------
4 => 1,2,3,4								(4) : 1개
------------------------------------------------------------
5 => 1,2,3,4,5								(2+3 , 5) : 2개
------------------------------------------------------------
6 => 1,2,3,4,5,6							(1+2+3 , 6) : 2개
------------------------------------------------------------
7 => 1,2,3,4,5,6,7							(3+4 , 7) : 2개
------------------------------------------------------------
8 => 1,2,3,4,5,6,7,8						(8) : 1개
------------------------------------------------------------
9 => 1,2,3,4,5,6,7,8,9						(2+3+4 , 4+5 , 9) : 3개
------------------------------------------------------------
10 => 1,2,3,4,5,6,7,8,9,10					(1+2+3+4 , 10) : 2개
------------------------------------------------------------
11 => 1,2,3,4,5,6,7,8,9,10,11				(5+6 , 11) : 2개
------------------------------------------------------------
12 => 1,2,3,4,5,6,7,8,9,10,11,12			(3+4+5 , 12) : 2개
------------------------------------------------------------
13 => 1,2,3,4,5,6,7,8,9,10,11,12,13			(6+7 , 13) : 2개
------------------------------------------------------------
14 => 1,2,3,4,5,6,7,8,9,10,11,12,13,14		(2+3+4+5 , 14) : 2개
------------------------------------------------------------
15 => 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15	(1+2+3+4+5, 4+5+6, 7+8, 15) : 4개 

손수 작성하고 규칙을 찾을 수 없어서 힌트를 보게되었는데
약수의 갯수가 정답이라는것을 듣고 직접 삭제하면 봤는데
하다보니 약수중에 짝수가 아닌 홀수의 갯수만 세어보니 오른쪽의 갯수와 값이 같더라구요
그래서 약수를 구해주고 그 후에 홀수면 answer를 증가시켜 완성했습니다.

나의 답안

function solution(n) {
    let answer = 0;
    for(let i = 1; i <= n; i++) {
      if(n % i === 0) {
        if(i % 2 === 1) answer++;
      }
    }
    return answer;
}
profile
다채로운 프론트엔드 개발자

0개의 댓글