# 프로그래머스 : 숫자의 표현 (Level 4)

[문제]


수학을 공부하던 민지는 재미있는 사실을 발견하였습니다. 그 사실은 바로 연속된 자연수의 합으로 어떤 숫자를 표현하는 방법이 여러 가지라는 것입니다. 예를 들어, 15를 표현하는 방법은
(1+2+3+4+5)
(4+5+6)
(7+8)
(15)
로 총 4가지가 존재합니다. 숫자를 입력받아 연속된 수로 표현하는 방법을 반환하는 expressions 함수를 만들어 민지를 도와주세요. 예를 들어 15가 입력된다면 4를 반환해 주면 됩니다.


[풀이]


사실 민지를 그렇게 도와주고 싶지는 않았지만..(농담)

문제는 사실 매우 간단하다.

  1. 1부터 차례대로 수를 증가하면서 연속된 자연수의 합이 주어진 수와 일치하면 카운트 증가
  2. 연속된 자연수의 합이 주어진 수보다 크면 중단
  3. 1부터 차례대로 최대 주어진 수까지만 증가
이를 코드로 표현하면 다음과 같다.


int expressions(int testCase)
{
    int answer = 0;
    int sum = 0;
    for(int i=1; i<testCase; i++) {
        sum = 0;
        sum += i;
        for(int j=i+1; j<testCase; j++) {
            sum += j;
            if(sum == testCase) {
                answer++;
                break;
            }
            else if(sum > testCase) {
                break;
            }
        }
    }
    return answer+1;
}

레벨 4의 문제라서 어려울 줄 알았는데, 예상외로 굉장히 빠르게 풀었던 문제였다.


댓글