본문 바로가기

프로그래머스/구현

[수학] 프로그래머스 '숫자의 표현' - js

반응형

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12924?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

2. 설명

이 문제는 수학 법칙..? 을 사용해서 풀어야하는 문제였다. 별짓을 다해봤는데 타임아웃을 해결할 수 없었다.

생각할 수 있는 방법은 무조건 이중 for문을 쓰는 법밖엔 없는데, 무조건 타임아웃이 떴다.

이 문제의 핵심은, 연속한 자연수들로 n을 표현하는 방법의 수는 n의 약수 중 홀수의 갯수라는 것이다.

15의 약수 중 홀수의 갯수는 1,3,5,15로 방법의 갯수는 4이다.

6의 경우에는 홀수의 갯수가 1,3 총 두개이므로 방법의 갯수는 2가 된다.

3. 코드

function solution(n) {
    let ans = 0;
    
    for(let i=1;i<=n;i++){
        if (n % i == 0 && i % 2 == 1){ // n의 약수이면서 홀수이면 answer++
             ans++
        }
    }
    
    return ans;
}

 

반응형