프로그래머스 연습문제 - 숫자의 표현(Level2, JS)

j_wisdom_h·2023년 1월 30일
0

CodingTest

목록 보기
30/58

프로그래머스 연습문제 - 숫자의 표현 반복하기(Level2, JS)


문제설명


제한사항 & 입출력 예


Solution

function solution(n) {
    sum = 0;
    answer = 0;

    max = n % 2 == 0 ? parseInt(n / 2) : parseInt( n / 2 )+ 1;
  
    for(let i = 1; i <= max ; i++){
        sum = 0;
        for (let j = i; j <= max; j++) {
            sum += j;
            if (sum === n) {
                answer++;
                break;
            }
            else if (sum >= n) { break;}
		}
    }
    return n === 1 ? answer : answer + 1;
}

문제해결 순서

  1. 절반으로 쪼갠다.
  • 절반 초과된 연속된 수의 합은 항상 주어진 수 n보다 크다
  • 따라서 절반 이하의 숫자의 연속된 합을 구하기 위해 절반으로 쪼갠다.
  1. 연속된 합이 주어진 n과 같으면 표현하는 방법의 수를 증가
  2. return answer + 1 은
    1 + 2 + 3 + 4 + 5 = 15
    4 + 5 + 6 = 15
    7 + 8 = 15
    여기 answer = 3에서
    15 =15 인 한 가지 경우를 더하여
    answer = 4

단, n===1일 경우는 1 = 1 만 존재하므로 더하기 1를 할 필요가 없다.

profile
뚜잇뚜잇 FE개발자

0개의 댓글