합 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

+ Recent posts