본문 바로가기
백준 Algorithm

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

by Echung 2023. 4. 7.

Problem

숫자의 표현

 

Solution

 자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return 하는 문제이다.

1. 1 부터 n의 길이의 반만큼 반복하면서 for문 안에 이중 for문으로 연속된 숫자들을 더해준다.

2. 더한 숫자가 n이랑 같으면 asnwer++해준다.

3. 이와 같은 방법을 n의 길이의 반만큼 반복한다.

 

class Solution {
    public int solution(int n) {
        //자기 자신은 무조건 포함되므로 1로 시작
        int answer = 1; 
        
        //n의 반보다 크면 그 값은 자기 자신보다 크므로 반값만
        for(int i = 1; i <= n / 2; i++) {
            int sum = 0;    
            
            for(int j = i; sum < n; j++) { 
                sum += j;
            }
            
            if(sum == n) {
                answer++;
            }
        }

        return answer;
    }
}
사진 1. 실행 결과

 자기 자신은 무조건 답이므로 answer = 1로 시작한다. 그리고 반 이상이 되면 어떤 수를 더하더라도 자신보다 커지기 때문에 2로 나눈 값만큼만 경우의 수를 구하면 된다.

마치며

  이번 문제는 간단한 문제였다. 혹시 다른 풀이나 더 좋은 방법이 있으면 댓글 남겨주시면 감사하겠습니다 :)

 
반응형