티스토리 뷰

반응형

 

백준 2018번 수들의 합 5


https://www.acmicpc.net/problem/2018

 

2018번: 수들의 합 5

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

www.acmicpc.net

 
    ● start_index와 end_index를 1로 초기화해주고 count도 1로 초기화(N만 고를 때의 경우의 수를 미리 더해놓기) 
    ● 투 포인터 이동 원칙에 따라서 반복문 시행하기
        sum > N : sum = sum - start_index; start_index++;
        sum == N : end_index++; sum = sum + end_index; count++; 
        sum < N : end_index++; sum= sum + end_index;
 

#include<iostream>
using namespace std;
int main() {

	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int start_index = 1;
	int end_index = 1;
	int sum = 1;;
	int count = 1;

	int N;
	cin >> N;

	while (end_index != N) {

		if (sum == N) {
			end_index++;
			sum = sum + end_index;
			count++;
		}

		else if (N > sum) {
			end_index++;
			sum = sum + end_index;
		}

		else {
			sum = sum - start_index;
			start_index++;
		}

	}

	cout << count;
}
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함