728x90
    
    
  
S는 서로 다른 N개의 자연수의 합이기 때문에 N은 1부터 증가하면서 누적 합이 S를 초과하기 전의 N을 구하면 되는 문제이다.
하지만 S의 범위는 int를 초과하는 범위이기때문에 long long으로 바꿔주어야한다.
#include<iostream>
using namespace std;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	long long s;
	cin >> s;
	long long sum = 0;
	long long answer = 0;
	for(long long i = 1; ; i++)
	{
		if(sum + i <= s)
		{
			sum += i;
			answer = i;
		}
		else
		{
			break;
		}
	}
	cout << answer;
}
반응형
    
    
    
  '알고리즘 > boj' 카테고리의 다른 글
| BOJ 1016 제곱 ㄴㄴ 수 (0) | 2023.01.17 | 
|---|---|
| BOJ 1439 뒤집기 (0) | 2023.01.14 | 
| BOJ 1114 통나무 자르기 (0) | 2023.01.13 | 
| BOJ 11047 동전 0 (0) | 2023.01.05 | 
| BOJ 1449 수리공 항승 (0) | 2023.01.05 |