본문 바로가기
Algorithm Study/BaekJoon (JAVA)

백준 2018_수들의 합 5_JAVA

by 창브로 2024. 3. 14.
728x90

https://www.acmicpc.net/problem/2018

 

2018번: 수들의 합 5

어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한

www.acmicpc.net

 

 

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());

	// 어짜피 모든 경우가 1부터 n까지기 때문에 배열을 굳이 만들지 않았다.
        // sum을 1로 준 이유는 처음 start와 end가 1을 가리키고 있을때를 대비해서다.
        int sum = 1;
        int count = 0;
        int startIdx = 1;
        int endIdx = 1;

        while (endIdx <= n) {
            if (sum==n) {
                count++;
                endIdx++;
                sum += endIdx;
            } else if (sum<n) {
                endIdx += 1;
                sum += endIdx;
            } else {
                sum -= startIdx;
                startIdx += 1;
            }
        }
    System.out.print(count);
    }
}

회고

- 투포인터를 사용해서 풀어야 하는 문제였다.

- 투포인터를 생각해 내기까지 많은 시간이 걸렸다.

'Algorithm Study > BaekJoon (JAVA)' 카테고리의 다른 글

백준 1874_스택 수열_JAVA  (1) 2024.03.15
백준 12891_DNA 비밀번호_JAVA  (1) 2024.03.14
백준 1940_주몽_JAVA  (1) 2024.03.14
백준 11659_구간 합 구하기 4_JAVA  (0) 2024.03.14
백준 11720_숫자의 합_JAVA  (0) 2024.03.14