문제 링크입니다: https://www.acmicpc.net/problem/1789
1부터 순차적으로 더해나가야 N의 최대값을 찾을 수 있습니다.
합이 S를 넘는 순간 마지막으로 더한 숫자를 수정하면 되므로 N의 최대값에서 1을 빼주면 정답이 됩니다.
#include <iostream>
using namespace std;
long long S;
int maxN(void)
{
int num = 1; //1부터 더해나가야 N의 최댓값
int result = 0;
long long sum = 0;
while (1)
{
sum += num;
result++;
//합이 S를 넘기면 마지막에 더한 숫자를 수정하면 되므로
if (sum > S)
{
result--; //N의 최댓값을 하나 줄인다
break;
}
num++;
}
return result;
}
int main(void)
{
cin >> S;
cout << maxN() << endl;
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2616번 소형기관차 (1) | 2018.05.13 |
---|---|
백준 1652 누울 자리를 찾아라 (0) | 2018.05.11 |
백준 15483번 최소 편집 (3) | 2018.05.10 |
백준 1254번 팰린드롬 만들기 (0) | 2018.05.10 |
백준 2864번 5와 6의 차이 (0) | 2018.05.10 |