문제
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
입력
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
출력
첫째 줄에 자연수 N의 최댓값을 출력한다.
예제 입력 1
200
예제 출력 1
19
const fs = require('fs');
let input = fs.readFileSync("/dev/stdin").toString();
let sum = 0, count = 0;
for(let i =1;; i++){
sum += i
count++;
if(sum > input){
count--;
break;
}
}
console.log(count);
주어진 자연수를 만들기 위해 가장 많은 수를 사용해야 한다면
1부터 1씩 올려가며 수를 더하는 것이다
1 2 3 4 5 .. 이런식으로 수를 더하면서 주어진 수를 넘어가는 순간의 개수에서 1개를 빼면된다
주어진 수가 11이라고 한다면
1 2 3 4 5
5일때 15가 되어버리니까 1 2 3 4에서 4를 5로 바꾸면 10이된다
즉, 주어진 수를 넘어가는 시점에서 -1을 한게 가장 많은 수를 사용한 것이다