▶https://www.acmicpc.net/problem/1789
<문제>
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
<예제 입력>
200
<예제 출력>
19
<코드>
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long s = sc.nextLong(); //자연수의 합
int n = 1; //자연수
while (((long) n *(n+1))/2<=s){ //자연수 합 공식
n++;
}
System.out.println(n-1);
}
}
- n이 s를 초과하면 while문이 종료된다. 이에 따라 예제를 보면 20일 때 종료되고 n은 20이 되는데, n은 값은 19가 되어야하므로 n-1를 해서 출력해준다.
- while문에 int n이 있기 때문에 long을 붙여 형변환을 해주어야한다.
'Algorithm' 카테고리의 다른 글
[백준/java] 10039 평균 점수 (0) | 2024.09.04 |
---|---|
[백준/java] 2750 수 정렬하기 (0) | 2024.08.09 |
[백준/java] 1181 단어 정렬 (0) | 2024.08.08 |
[백준/java] 20492 세금 (0) | 2024.08.07 |
[백준/java] 5063 TGN (0) | 2024.08.06 |