백준 1789번, 수들의 합

95qwer·2022년 5월 20일
0

'서로 다른' N개의 자연수의 합 S.
최대한 많은 종류를 써야 합니다.
그러면 그냥 1부터 차례대로 다 더하고, 마지막 하나의 값만 정해줄 수 있으면 됩니다.
즉, 1부터 차례대로 더해가다가 최초 S를 넘었을 때 멈추고
그때의 개수 N-1이 정답입니다. 마지막 1개의 값이 넘었으므로 그 직전의 값에서 S가 되기 위한 +@만 해주면 됩니다. 하지만 개수를 구하는 게 목표이니 그저 마지막 N개에서 -1만 해주면 됩니다.

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
		long num = Long.valueOf(bfr.readLine());
		int result = 0;
		long sum = 0;
		long tmp = 1;
		while(true) {
			sum += (tmp++);
			result++;
			if(sum > num)
				break;
		}
		
		System.out.println(--result);

		bfr.close();
	}
}
profile
한땀한땀오타없이

0개의 댓글