티스토리 뷰

반응형

 

문제

N입력으로 양의 정수 N이 입력되면 2개 이상의 연속된 자연수의 합으로 정수 N을 표현하는 방법의 가짓수를 출력하는 프로그램을 작성하세요.

만약 N=15이면

7+8=15

4+5+6=15

1+2+3+4+5=15

와 같이 총 3가지의 경우가 존재한다.

 

입력

첫 번째 줄에 양의 정수 N(7<=N<1000)이 주어집니다.

 

출력

첫 줄에 총 경우수를 출력합니다.

 

 

 

예시 입력

15

예시 출력

3

 

 

 

 

 

문제 풀이

 

[첫번째 풀이]

import java.util.*;

public class Main {
    public int solution(int n) {
        int sum = 0, count = 0, start = 1;

        for (int i=1; i<n; i++) {
            sum += i;

            while (sum > n) {
                sum -= start;
                start++;
            }
            if (sum == n) count++;
        }

        return count;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();

        Main main = new Main();
        System.out.println(main.solution(n));
    }
}

(Time 161ms / Memory 27MB)

 

 

 

- for 문을 돌면서 앞에서부턴 더하고, 기준점을 넘어가면 앞에서부터 빼는 식으로 개수를 구해간다.

 

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
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 26 27 28 29 30
글 보관함