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