최대한 많은 수로 이루어져야 하므로, 1부터 차례대로 더한 합을 입력받은 값과 비교하면 되는 문제다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BaekJoon1789 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
long s = Long.parseLong(br.readLine()); // 1 ≤ S ≤ 4,294,967,295 이므로 long으로 선언
long sum = 0; // 1부터 차례대로 더하면서 sum이 s보다 크거나 같을 때 반복문 정지
int i = 0; // 인덱스
while(sum < s) {
i++;
sum += i;
}
if(sum > s) { // sum이 s보다 크다면
i--; // s - 마지막 인덱스까지 더한 값을 마지막 인덱스에 더해줌
}
System.out.print(i);
}
}
입력받는 s의 크기가 정수형의 범위를 한참 벗어나므로 long으로 선언해주어야 한다.