https://www.acmicpc.net/problem/1024
이 문제는 주어진 N을 연속된 자연수의 합으로 표현할 수 있는
가장 짧은 수열을 찾는 문제다.
최소 길이 LL부터 최대 100까지 수열의 길이를 하나씩 늘려가며 탐색한다.
각 길이에서 연속된 수열의 합이 N과 일치할 수 있는지 확인하고,
조건을 만족하는 경우 수열의 시작 값을 계산해 결과로 출력한다.
조건을 만족하려면, 계산된 시작 값이 0 이상이어야 하며,
수열의 합이 정확히 N이 되어야 한다.
조건을 만족하는 수열을 찾으면 즉시 출력하고 탐색을 종료하며,
찾지 못한 경우에는 -1을 출력한다.
이 코드는 입력값을 기반으로 효율적으로 가능한 수열을 탐색하며,
원하는 결과를 도출한다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long N = scanner.nextLong();
int L = scanner.nextInt();
boolean found = false;
for (int length = L; length <= 100; length++) {
// start = (N - (length * (length - 1) / 2)) / length
long sum = length * (length - 1) / 2;
if (N < sum) break;
if ((N - sum) % length == 0) {
long start = (N - sum) / length;
if (start >= 0) {
for (int i = 0; i < length; i++) {
System.out.print((start + i) + " ");
}
System.out.println();
found = true;
break;
}
}
}
if (!found) {
System.out.println(-1);
}
scanner.close();
}
}
'Algorithm & Data Structures > BOJ' 카테고리의 다른 글
b7453. 합이 0인 네정수 (1) | 2024.12.20 |
---|---|
b2623. 음악프로그램 (0) | 2024.12.17 |
b.2473 세용액 (0) | 2024.12.11 |
b.1562 계단수 (2) | 2024.12.09 |
b.2166 다각형의 면적 (0) | 2024.12.06 |