백준 문제풀이/실버5

백준 1789번 - 수들의 합

void_melody 2021. 11. 20. 18:55

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

 

1789번: 수들의 합

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

www.acmicpc.net

자연수 N이 최대려면, 1+2+3+.... 이렇게 가장 작은 수부터 시작해서 더해야한다.

예제가 19여서 생각을 해보니, 1+2+3+....19가 190이다. 저 19를 200에 맞추기 위해 29로 바꿔주면 끝이다.

즉, 이렇게 더하나가다가 N보다 커지면 마지막 수만 바꿔주면 된다.

#include <iostream>

using namespace std;

int main()
{
	long long S;
	cin >> S;

	long long sum = 0;
	int count = 0;
	long long i = 1;
	while (true)
	{
		if (sum > S)
		{
			cout << count - 1;
			break;
		}
		sum += i;
		i++;
		count++;
	}

	return 0;
}

입력의 범위가 커서 long long으로 했다.

 처음에 int로 했다가 시간초과뜸..