본문 바로가기

CS/알고리즘

[230326] 숫자의 표현

반응형

 

 

문제

 

프로그래머스

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

programmers.co.kr


 

내 풀이

  • i는 끝까지(n) 가면 비효율적이므로, Math.floor(n / 2) 까지만 가도록 작성하였음
  • answer = 1 ⇒ n은 무조건 포함되는데, i는 n까지 가지 않으므로 처음부터 n을 포함하고 시작함
function solution(n) {
    let answer = 1;
    
    const endNum = Math.floor(n / 2)
    
    for(let i = 1; i <= endNum; i++){
        let sum = 0;
        for(let j = i; j <= n+1; j++) { 
            sum += j 
            if(sum === n) answer++;
            if(sum > n) break;
        }
    }
    return answer;
}

 

 

다른 풀이

Point : { n - (1부터 i까지의 합) } 을 i로 나눴을 때 나머지가 0이다.

function solution(n) {
    let answer = 0;
    let  i = 0;

    while(n > 0){
       i++;
       if(n % i === 0) answer++;
       n -= i;
    }
    return answer;
}
반응형

'CS > 알고리즘' 카테고리의 다른 글

[230326] 영어 끝말잇기  (0) 2023.03.26
[230326] 다음 큰 숫자  (0) 2023.03.26
[230325] 3진법 뒤집기: parseInt, toString  (0) 2023.03.26
[230325] 이진 변환 반복하기  (0) 2023.03.26
[230325] 최솟값 만들기  (0) 2023.03.26