알고리즘문제풀이/백준
[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);
}
}