코딩테스트/백준
[백준-자바] 2018번 수들의 합 5 / 2022.05.21
강원대목동녀
2022. 5. 21. 19:57
728x90
https://www.acmicpc.net/problem/2018
2018번: 수들의 합 5
어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한
www.acmicpc.net
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader((new InputStreamReader(System.in)));
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
int N = Integer.parseInt(stringTokenizer.nextToken());
int count = 1; // count가 1인 이유는 end가 N일 때를 미리 고려한 것
int sum = 1;
int start = 1;
int end = 1;
while(end!=N){
if(sum==N){ // sum과 N이 같다면
count++; // count + 1
end++; // end 옆으로 이동
sum = sum+end; // end 이동했으므로 합이 커짐
} else if(sum > N){ // sum이 N보다 크다면
sum = sum-start; // 값을 줄여줘야 하기 때문에
start++; // start 옆으로 이동
} else{ // sum이 N보다 작다면
end++; // 값을 더해줘야 하기 때문에
sum = sum+end; // end 옆으로 이동
}
}
System.out.println(count);
}
}
풀이 :
728x90