프로그래밍/백준, 프로그래머스 문제 풀이
백준 1789 수들의합 풀이(c++)
오늘의논리
2024. 1. 15. 16: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