[Algorithm] ➕백준 1789 수들의 합

HaJingJing·2021년 8월 24일
0

Algorithm

목록 보기
97/119

0. 문제

서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?

입력
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.

출력
첫째 줄에 자연수 N의 최댓값을 출력한다.

1. 아이디어

💡 1부터 더한 합이 S보다 커지면, (합-S)한 값 하나를 빼주면 됨
ex) 200 → 1+2+...+19+20 = 210 / 200이 되려면 10을 빼면 됨

2. 핵심 풀이

  1. 1부터 더한 합이 S보다 커지면, (합-S)한 값 하나를 빼주면 됨
for(int i=1; ; i++) {
	if(sum > S) break;
	sum += i;
	ret++;
}

3. 코드

import java.io.*;

public class BOJ_1789 {

	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		long S = Long.parseLong(br.readLine());
		
		long sum = 0;
		int ret = 0;
		for(int i=1; ; i++) {
			if(sum > S) break;
			sum += i;
			ret++;
		}
		
		System.out.println(ret-1);
	}

}

4. 결과

성공✨

profile
🌱초보 개발자🌱

0개의 댓글