Java/Algorithm

[Java-Algorithm] 백준 1789 풀이

Jeong Jeon
반응형

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

 

1789번: 수들의 합

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

www.acmicpc.net

 

 

풀이 : 

1+199 = 200

..1+2+197 = 200

... 1+2+3+194 = 200

이런식으로 해서 가장 많은 숫자의 합으로 이루어질때를 구하면 된다.

 

그래서 값을 더할 때마다 count를 증가시켰고, 최종 마지막때는 값이 더 커질수 있으니 그때는 count -1 을 해준다.

public static void main(String[] args) throws Exception{
		 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	     StringTokenizer st = null;

	     st = new StringTokenizer(br.readLine());
	     long s = Long.parseLong(st.nextToken()); //서로 다른 n개의 자연수의 합이 s

	     long count=1;
	     long sum=1;

	     while(sum<s) {
	    	 count++;
	    	 sum+=count; // 1씩 증가 시킨값
	     }

	     if(sum>s) {	//같거나 커지면 현재갯수 빼주기
	    	 count--;
	     }
	     System.out.println(count);
	}
반응형