반응형
이 포스팅은 자바 8버전으로 풀이가 됐습니다.
문제 출처
https://www.acmicpc.net/problem/1789
1789번: 수들의 합
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
www.acmicpc.net
문제
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
입력
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
출력
첫째 줄에 자연수 N의 최댓값을 출력한다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
// 1789번
public class Main {
public static void main(String[] args) throws IOException {
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
Long S = Long.parseLong(rd.readLine());
Long N = 0L;
int count=0;
for(int i=1;;i++) {
if(N>S) {
break;
}
N+=i;
count++;
}
System.out.println(count-1);
}
catch(IOException e) {
System.out.println("error");
}
}
}
|
풀이
서로 다른 N개의 자연수의 합이 S라고 한다. -> 서로 다른 1 + 2 + 3 + 4 값을 더하면 합은 10이 된다.
즉, 10을 입력하면 4가 나오는 코드를 구현해야 한다.
주어진 S를 입력받을 수 있도록 선언한다.
i = 1부터 시작해서 입력받은 값까지 모두 반복한 경우 반복문을 종료한다.
이후 반복한 값이 저장된 count 함수의 -1의 연산을 하는 경우 마지막에 덧셈 된 N의 최댓값이 어떤 값인지 알 수 있다.
짧은 포스팅 읽어주셔서 감사드립니다.
오타나 문제가 있는 경우 댓글 부탁드리겠습니다.
다음 포스팅 때 뵙겠습니다.
반응형
'백준 - Java' 카테고리의 다른 글
[백준 - 1157][Java] 단어 공부 (0) | 2022.07.27 |
---|---|
[백준 - 2750][Java]수 정렬하기 (0) | 2022.06.20 |
[백준 - 2163][Java] 초콜릿 자르기 (0) | 2022.06.14 |
[백준 - 5635][Java] 생일 (0) | 2022.06.12 |
[백준 - 1550] [Java] 16진수 (0) | 2022.06.08 |