본문 바로가기
Algorithm/Programmers

[Programmers] 숫자의 표현(JavaScript)

by 백승전 2022. 8. 11.

 

알림

 

본 포스팅은 공부 목적으로 작성된 글이며 상업적 목적으로 절대 사용되지 않았음을 밝힙니다.

 

문제

 

https://school.programmers.co.kr/learn/courses/30/lessons/12924

 

프로그래머스

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

programmers.co.kr

 

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

예를 들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.
1 + 2 + 3 + 4 + 5 = 15
4 + 5 + 6 = 15
7 + 8 = 15
15 = 15

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

 

코드

 

// 효율성 테스트 불통과
function solution(n) {
    let answer = 0;
    for(let i = 1; i <= n; i++){
        let sum = 0;
        for(let j = i; j <= n; j++){
            sum += j;
            if(sum == n) answer++;
        }
    }
    return answer;
}

 

// 효율성 테스트 통과
function solution(n) {
    let answer = 0; // 정답(카운트 된 수)
    let sum = 0; // 누적값
    for(let i = 1; i <= n; i++){
        for(let j = i; j <= n; j++){
            sum += j;
            // 누적값 = 매개변수 n
            if(sum == n){
                answer++; // 정답 카운트
                sum = 0; // 초기화
                break;
            // 매개변수보다 커질 시
            }else if(sum > n){
                sum = 0; // 초기화
                break;
            }
        }
    }
    return answer;
}

 

풀이

 

첫 번째 코드는 시간 초과로 효율성 테스트를 통과하지 못 했습니다.

아무래도 반복문이 돌 때마다 변수를 선언해줘 그런 것 같아, 변수를 밖에다 선언하고 조건문을 추가해 줬습니다.

댓글