알고리즘

C++ 알고리즘 - 1789 수들의 합

마루설아 2025. 1. 20. 18:35

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

 

#include <bits/stdc++.h>
#define endl "\n"

using namespace std;

/******** 함    수 ********/


int main(void) {
	/******** C++ INIT ********/
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);


	/******** 변    수 ********/
	long long input;
	long long sum = 0;
	long long chk;
	vector<long long> v;


	/******** 구    현 ********/
	v.push_back(0);

	cin >> input;

	// 1부터 시작 : 모두 합한 수가 입력된 수보다 작으면 벡터에 삽입
	for (long long i = 1; sum < input; i++) {
		v.push_back(i);
		sum += i;
	}

	// 합한 수가 커졌으면 입력된 수와 차를 구함
	chk = sum - input;

	// 차가 없으면
	if (chk == 0) {
		cout << v.size() - 1;
		return 0;
	}

	// 차가 있을 시 차이나는 만큼의 수를 벡터에서 제거
	v.erase(v.begin() + chk);
	cout << v.size() - 1;
}