백준 1789(이분탐색_수들의 합)

EunBi Na·2022년 4월 21일
0

문제

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

입력

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

출력

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

예제 입력 1

200

예제 출력 1

19

파이썬 풀이

최댓값을 구하는 문제이므로 1부터 차례대로 더해 s보다 커지게 되면 그 개수에서 1을 빼면 된다.

n * (n + 1) / 2는 1부터 n까지의 합의 공식이다.

s = int(input())
n = 1
while n * (n + 1) / 2 <= s:
    n += 1
print(n - 1)

자바 풀이

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		long num = scan.nextLong();
		long sum = 0;
		int count = 0;
		
		for(int i=1; ; i++) {
			if(sum > num)	break;
			sum += i;
			count ++;
		}
		System.out.println(count-1);
		scan.close();
	}

}
profile
This is a velog that freely records the process I learn.

0개의 댓글