반응형
문제
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
입력
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
출력
첫째 줄에 자연수 N의 최댓값을 출력한다.
N개의 자연수의 합이 S 라 할 때 자연수 N의 최댓값이니 최대한 작은 수부터 합하여야 개수가 많아진다!
그래서 무작정 1부터 더해보기로했다.
근데 어라? 규칙을 발견했다 1부터 S가 나올 때까지 더할 때 합이 S를 넘긴 딱 그 시점에서 지금까지 더해왔던
자연수 1~10중에 한 수 만 빼면 S가 나오는 것이었다...
import java.util.Scanner;
public class BJ_CT_6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long n= sc.nextLong();
long sum=0; //더해서 n을 만들 합
int count=0; //서로 다른 자연수의 개수
int i=1; //자연수이니 1부터 시작
while (true){
if(sum>n)break; //자연수 n보다 커지면 break
sum+=i;
count++;
i++;
}
System.out.println(count-1);
}
}
고민은 좀 많이 했지만 생각보다 간단하게 풀렸다!
오늘도 통과!
반응형
'알고리즘🪺 > 백준' 카테고리의 다른 글
[JAVA] 백준 2775번: 부녀회장이 될테야 (0) | 2022.12.01 |
---|---|
[JAVA] 백준 1026번: 보물 (0) | 2022.11.30 |
[JAVA] 백준 17608번: 막대기 (0) | 2022.11.28 |
[JAVA] 백준 8958번: OX퀴즈 (0) | 2022.11.24 |
[JAVA] 백준 1075번: 나누기 (0) | 2022.11.24 |