백준 문제
백준 2018(수들의 합 5) JAVA <투 포인터>
kangyuseok
2023. 7. 10. 15:34
728x90
2018번: 수들의 합 5
어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한
www.acmicpc.net
n이 주어지면 1 ~ n 까지의 연속된 수들의 합이 n인 경우의 수를 구하는 것입니다.
예를 들어 n = 15이면 {1, 2, 3, 4, 5}, {456}, {7, 8}, {15}
총 4가지 입니다.
투포인터를 사용했습니다.
import java.util.Scanner;
public class boj_2018 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int l =1, r =1;
int sum =0;
int cnt = 0;
while(l <= r && r<=n){
if(sum <n)sum += r++;
else{
if(sum == n)cnt++;
sum -=l++;
}
}
System.out.println(cnt + 1); //자기 자신 답 포함
}
}