본문 바로가기
알고리즘

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

by limew 2023. 7. 17.

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

첫 풀이

처음부터 하나씩 더해가며 합이 n이 되면 answer++

function solution(n) {
    var answer = 1;
    for (let i = 1; i <= Math.floor(n / 2); i++) {
        let sum = i;
        for (let j = i+1; j < n; j++) {
            // 합이 n이 될때
            sum += j;
            if (sum === n) {
                answer++;
                break;
            } else if (sum > n) {
                break;
            }
        }
    }
    return answer;
}

 

➡ 정확성은 맞았지만 시간초과가 났다

 

첫번째 숫자 이후의 숫자는 Math.floor(n/2)+1이상일 수 없다

function solution(n) {
    var answer = 1;
    const half = Math.floor(n/2);
    for (let i = 1; i <= half; i++) {
        let sum = i;
        for (let j = i+1; j <= half+1; j++) {
            // 합이 n이 될때
            sum += j;
            if (sum === n) {
                answer++;
                break;
            } else if (sum > n) {
                break;
            }
        }
    }
    return answer;
}