본문 바로가기
프로그래밍/백준, 프로그래머스 문제 풀이

백준 1789 수들의합 풀이(c++)

by 오늘의논리 2024. 1. 15.
728x90

문제

서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?

입력

첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.

출력

첫째 줄에 자연수 N의 최댓값을 출력한다.

 

서로다른 자연수 n개의 합이 s라고한다면 최댓값을 구하기 위해선 자연수중 가장 작은값(1)부터 누적해서 더하다가  S 가 됬을때 그때 누적된 수중 가장 큰값을 구해주면된다. 이때 숫자범위가 커 자료형을 long long 타입을 사용하였다.

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main() 
{
	long long N = 0;
	long long answer = 0;

	cin >> N;

	for (long long i = 0, j = 0; j < N; ++i)
	{
		j += i;
		if (j > N)
		{
			break;
		}
		answer = i;

	}

	cout << answer;

	return 0;
}
728x90

댓글