https://www.acmicpc.net/problem/1789
자연수 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로 했다가 시간초과뜸..
'백준 문제풀이 > 실버5' 카테고리의 다른 글
백준 2609번 - 최대공약수와 최소공배수(with 유클리드 호제법) (0) | 2021.12.14 |
---|---|
백준 4673번 - 셀프 넘버 (0) | 2021.11.23 |
백준 1316번 - 그룹 단어 체커 (0) | 2021.11.20 |
백준 1475번 - 방 번호 (0) | 2021.11.14 |
백준 1246번 - 온라인 판매 (0) | 2021.11.09 |