알고리즘/BOJ

백준 1789번 수들의 합

꾸준함. 2018. 5. 11. 02:50

문제 링크입니다: 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