본문 바로가기
알고리즘/투포인터

[백준][JAVA] 2018번 수들의 합 5

by 임짠짠 2023. 3. 10.
반응형
 

2018번: 수들의 합 5

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

www.acmicpc.net

 

 

코드

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int start = 1;
		int end = 1;
		int num = 1;
		int ans = 0;
		while(start<=end) {
			if(num==n) {
				end++;
				num=num+end-start;
				start++;
				ans++;
			}
			else if(num<n) {
				end++;
				num+=end;
			}
			else {
				num-=start;
				start++;
			}
		}
		System.out.println(ans);
	}

 

설명

투포인터를 사용해서 풀었다.

start와 end 포인터를 사용하여 만약 합이 N보다 크면 전체합에서 start를 뺴준 뒤 start 값을 1 증가시킨다.

합이 N보다 작으면 end를 1 증가시킨 뒤 해당 값을 전체합에 더해준다.

만약 N과 같아진다면 ans 값을 1 증가시킨다. 

반응형

댓글