빠에야는 개발중

숫자의 표현 본문

공부/알고리즘 문제

숫자의 표현

빠에야좋아 2018. 3. 8. 02:45

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


이번에도 다이나믹으로 풀려고 했다가 생각보다 더 쉬운 문제인 것을 깨닫고 선형으로 찾아서 풀었다.

1부터 n까지 계속 더해가면서 1부터 시작하는 경우, 2부터 시작하는 경우, ... 이렇게 모두 계산하여 입력값과 같아지는 경우에만 answer를 더해주면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Expressions {
 
    public int expressions(int num) {
        int answer = 0;
 
        for(int i = 1; i<=num;i++) {
            int temp = 0;
            for(int j = i; j<=num;j++) {
                temp += j;
                if(temp == num) {
                    answer++;
                    break;
                }
            }
        }
        
        return answer;
    }
 
    public static void main(String args[]) {
        Expressions expressions = new Expressions();
        // 아래는 테스트로 출력해 보기 위한 코드입니다.
        System.out.println(expressions.expressions(15));
    }
}
cs


'공부 > 알고리즘 문제' 카테고리의 다른 글

가장 큰 정사각형 찾기  (0) 2018.03.10
최고의 집합  (0) 2018.03.09
야근 지수  (0) 2018.03.07
다음 큰 수  (0) 2018.03.07
멀리 뛰기  (0) 2018.03.06
Comments