연속된 숫자의 합을 찾는 문제이다.투 포인터라는 알고리즘을 이용해서 풀면 된다.텍스트만 봤을 때는 어려웠으나 설명 영상을 한번 보니 간단하게 이해가 됐다.
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
// 자기 자신은 항상 자신이다.그렇기에 count는 1로 초기화
// 마지막에 자기 자신이 항상 카운트되므로
// 자연수는 1에서 시작하기에 sum을 1로 초기화
// start가 왼쪽으로 간다 = 숫자를 하나 뺀다
// finish가 왼쪽으로 간다 = 숫자를 하나 더한다
int sum = 1;
int count = 1;
int startIndex = 1;
int finishIndex = 1;
while(finishIndex != N){
if(sum<N){
finishIndex++;
sum+=finishIndex;
}else if(sum>N){
sum-=startIndex;
startIndex++;
}else{
count++;
finishIndex++;
sum+=finishIndex;
}
}
bw.write(String.valueOf(count));
bw.flush();
bw.close();
br.close();
}
}