티스토리 뷰
728x90
https://www.acmicpc.net/problem/1789
- 문제 :
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
- 풀이 :
수학 문제였습니다.
처음에는 문제를 더할 수 있는 수의 최댓값을 찾는 줄 알고 잘못 생각했는데 보니까 수들의 개수인 N의 최댓값을 찾는 문제였습니다.
N이 1과 2일 경우를 제외(항상 1)하고 1부터 S+1까지 더합니다. 이 때, 누적 합의 값이 S보다 커질 때 수의 개수에서 1을 빼주면 됩니다.
예를 들어, S = 30이라면 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 = 36 이므로 여기서 6을 뺀 값이 S를 만들 수 있는 최대 개수이고 이는 8 - 1인 7입니다.
만약 N까지 더했을 때 딱 떨어지는 수 ( ex : 3, 6, 10, 15, 21, 28 ....) 이라면 -1을 하지 않은 값을 출력해야 합니다.
- 소스코드 :
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long N = sc.nextLong();
long sum = 0;
if (N == 1 | N == 2 ) {
System.out.println(1);
return;
}
for (int i = 0; i < N; i++) {
sum += i;
if (sum > N) {
System.out.println(i-1);
break;
} else if (sum==N) {
System.out.println(i);
break;
}
}
}
}
320x100
'Algorithm > Math' 카테고리의 다른 글
(Java/자바) - SWEA [모의 SW 역량테스트] 4012번 : 요리사 (0) | 2022.08.12 |
---|---|
(Python/파이썬) - 백준(BOJ) 1630번 : 오민식 (0) | 2022.06.17 |
(Python/파이썬) - 백준(BOJ) 1004번 : 어린 왕자 (1) | 2022.06.09 |
(Python/파이썬) - 백준(BOJ) 1025번 : 제곱수 찾기 (0) | 2022.05.31 |
(Python/파이썬) - 백준(BOJ) 1027번 : 고층 건물 (1) | 2022.05.30 |
댓글
© 2022 WonSeok, All rights reserved