본문 바로가기
ALGORITHM/Implement

[JAVA] 백준 1789번

by sjs_2215 2019. 9. 1.

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

 

1789번 수들의 합

 

문제 재정의:

"서로 다른" n개의 숫자가 있다. n개의 수를 다 더하면 총합 s가 됨.

s가 주어질 때 n의 최댓값은 무엇인가

 


 

생각한 것:

 

1부터 19까지 더하면 190인 거임.

  • 1부터 1씩 더해가면서 s가 도달할 때까지의 count을 출력하면 되는 거 아닌가? 그래야 '최대'를 구할 수 있지 않나 싶다

 

런타임 에러 났지만, s의 범위가 S(1 ≤ S ≤ 4,294,967,295) 여서 int가 아닌 long을 써주니 바로 해결.

->

Long.parseLong

 

코드:

 

package till;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        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;
      	}
      	
      	if(sum>s){
  			count--;
  		}
      	
      	System.out.println(count);
           
    }
}

'ALGORITHM > Implement' 카테고리의 다른 글

[JAVA] 백준 10871번  (0) 2019.09.01
[JAVA] 백준 2455번  (0) 2019.08.25
[JAVA] 백준 1173번  (0) 2019.08.17
[JAVA] 백준 1592번  (0) 2019.08.17
[JAVA] 프로그래머스 가장 큰 수  (0) 2019.07.15

Comments