코테/백준

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

imname1am 2023. 4. 3. 20:08
반응형

🔺 문제

 

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());
		
		int start_idx = 1;
		int end_idx = 1;
		int cnt = 1;    // 가지수
		int sum = 1;
		
		while(end_idx != N) {
		    if(sum == N) {  // 현재 연속 합이 N과 같은 경우
		        cnt++;
		        end_idx++;
		        sum += end_idx;
		    }
		    else if(sum < N) {
		        end_idx++;
		        sum += end_idx;
		    }
		    else if(sum > N) {
		        sum -= start_idx;
		        start_idx++;
		    }
		}
		System.out.println(cnt);
	}
}
✅ 해결 아이디어
- 투 포인터 ! (시작점, 끝점 위치의 처음 위치가 같음)

[투 포인터 이동 원칙]

sum == N인 경우end_idx++; sum += end_idx; cnt++;

sum > N인 경우   ⇨ sum -= start_idx; start_idx++; (= 왼쪽 값 삭제)

sum < N인 경우   ⇨ end_idx++; sum += end_idx; (= 오른쪽으로 한 칸 확장)

 


🔺 다른 풀이들

 

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

https://www.acmicpc.net/problem/2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자

yeoncoding.tistory.com

 

[투 포인터, JAVA] 백준 - 2018

문제: https://www.acmicpc.net/problem/2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속

life-study-1031.tistory.com

 

백준 BaekJoon 2018번: 수들의 합 5 [Java] 자바

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

seeminglyjs.tistory.com

 

반응형