합 S가 주어진다.
합 S가 나오는 서로 다른 ‘최대 개수' N을 찾아야 한다. 서로 다른 수를 더하되 최대 개수니까 1부터 차례로 더한다.
처음에는 1 더하고. 다음에는 2 더하고. .... 이런 식이다.
만약 특정 숫자를 더했을 때 s를 초과한다면, 그 직전 개수가 답이 된다.
#include <bits/stdc++.h>
using namespace std;
long long s;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> s;
int num = 1; // 더할 수
int cnt = 0; // 더한 수의 개수
long long sum = 0; // 누적 합
while(1){
sum += num;
cnt++;
if(sum > s){
cnt--;
break;
}
num++;
}
cout << cnt;
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
민균이의 비밀번호 백준 9933번 c++ (0) | 2022.02.17 |
---|---|
막대기 백준 1094번 c++ (0) | 2022.02.17 |
좌표 압축 백준 18870번 c++ (0) | 2022.02.16 |
수 정렬하기 2 백준 2751번 c++ (0) | 2022.02.16 |
마인크래프트 백준 18111번 c++ (0) | 2022.02.14 |