[백준] Baekjoon Online Judge
문제
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
입력
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
출력
첫째 줄에 자연수 N의 최댓값을 출력한다.
풀이
#include <iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
long long S, N;
cin >> S;
for (N = 1; ; N++) {
S -= N;
if (S <= 0) break;
}
if (S < 0) N--;
cout << N << '\n';
return 0;
}
N의 최댓값을 구하기 위해서는 S를 만드는데 사용하는 숫자가 가능한 작아야 한다. 그렇기에 반복문이 1부터 시작되도록 하였다. 그러다 S의 값이 0보다 작아지면 반복문이 끝나게 된다.
그 결과 S가 0보다 작다면 사용한 숫자를 하나 빼야하는 것이기에 N의 값을 1 줄어들게 해야 한다.
'백준 > C++' 카테고리의 다른 글
[Baekjoon/C++] 1715번 - 카드 정렬하기 (0) | 2024.10.19 |
---|---|
[Baekjoon/C++] 5585번 - 거스름돈 (0) | 2024.10.18 |
[Baekjoon/C++] 30999번 - 민주주의 (1) | 2024.10.14 |
[Baekjoon/C++] 1743번 - 음식물 피하기 (0) | 2024.10.08 |
[Baekjoon/C++] 2644번 - 촌수계산 (0) | 2024.10.07 |