서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
첫째 줄에 자연수 N의 최댓값을 출력한다.
S보다 작거나 같은 1~k의 합에서 k가 최댓값이다. 라는 명제가 참이 되는 것이다.int의 범위를 벗어나기 때문에 long 타입으로 계산해야 한다.import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Baekjoon_1789 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
long n = Long.parseLong(br.readLine());
System.out.println(getMaxK(n));
}
public static int getMaxK(long targetNum){
long sum = 0;
int cnt = 0;
while(true){
if(sum + cnt+1 > targetNum){
break;
}
sum += cnt+1;
cnt ++;
}
return cnt;
}
}