알고리즘문제풀이/백준

[BOJ]1789_수들의합_Java

초보개발자.. 2021. 11. 23. 12:59

--문제--

https://www.acmicpc.net/problem/1789

 

1789번: 수들의 합

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

www.acmicpc.net

--문제 접근--

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

인데 간단하게 생각해보면 1부터 하나씩 차례대로 더해보다 만약 S보다 큰 값이 나온다면 그 값의 차이만큼만 빼면 S가 되므로 계속 더해주다가 -1만 해주면 된다고 생각하여 문제를 풀어 봤습니다.

만약 S가 200일 때 계속 더해주다가 201이 되었다고 가정해보자면 어차피 1만큼만 빼면 된다고 생각하였습니다.

--코드--

package 기초백준추천문제;

import java.util.Scanner;

public class BOJ_1789_수들의합 {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		long S=sc.nextLong();
		long ans=0;
		long tmp=0;
		while(true) {
			tmp+=++ans;
			if(tmp>S)break;
		}
		System.out.println(--ans);
	}
}