본문 바로가기

문제 풀이/Programmers

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

문제 출처 - Programmers

문제는 여기

 

코딩테스트 연습 - 숫자의 표현

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

programmers.co.kr


[풀이]

1. 시작부터 n까지 값을 계속 더한다.

2. 1. 에서 구한 값이 n과 같으면 결괏값을 증가시키고 반복을 종료한다.

3. 1.에서 구한 값이 n보다 크면 반복을 종료한다.

4. 1. ~ 3. 의 과정을 n만큼 반복한다.

[접근]

1. 시작점부터 숫자를 계속 더하면서 조건에 맞는 값일 경우 결괏값을 증가시켜주면 되겠다고 생각하였다.

[코드]

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        // 1부터 n까지 탐색
        for (int i = 1; i <= n; i++) {
            int sum = 0;
            
            // i부터 n까지 탐색
            for (int j = i; j <= n; j++) {
                // sum에 값을 계속 더하기
                sum += j;
                
                // 결과가 나오면 횟수를 증가시키고
                // 더 이상 나올 수 없으니까 break
                if (sum == n) {
                    answer++;
                    break;
                }
                // 값을 넘어서면 탐색 필요 없으니까 break
                else if (sum > n) {
                    break;
                }
            }
        }  
        return answer;
    }
}