https://www.acmicpc.net/problem/2355
2355번: 시그마
첫째 줄에 두 정수 A, B가 주어진다. (-2,147,483,648 ≤ A, B ≤ 2,147,483,647)
www.acmicpc.net

같이 수열 혹은 임의의 정수에 대한 대상의 합을 축약해서 나타낼 때 사용한다.

[전체 코드]
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long[] num = new long[2];
long N = 0L;
//제한시간이 무척 짧기때문에 수식을 써주어야 한다.
num[0] = sc.nextLong(); //수 범위가 int형은 오버플로가 나기때문에 long자료형으로 수입력
num[1] = sc.nextLong();
Arrays.sort(num); // 수정렬 B에 큰숫자가 담기도록
N = num[1] - num[0] + 1; //등차수열의 항 구하는 공식 (A + B) / 1 + 1
System.out.println((( num[0] + num[1] ) * N ) / 2); //등차급수의 합 공식 (A + B) * N / 2
}
}
[제출 결과]

위 제출결과는 고군분투한 흔적인데 정말 다풀어놓고 오버플로 때문에 계속 틀리고 있었다. 입력값이 -21억~21억이어서 괜찮은줄로만 알고 다른부분을 계속 건드리고 있었는데 결국 변수들을 다 long으로 선언해주니 통과 됐다.
이번문제에서 if문을 통한 수비교를 할 수 있었는데 너무 귀찮아서 배열로 담은 후에 정렬을 통한 수 정렬을 했다.
두 수의 정렬이 필요한 이유는 등차수열의 항 개수를 구할때 큰수에서 작은수를 빼야 하기 때문이다.
예를 들어서 5 - 3 과 3 - 5 의 결괏값은 엄연히 다르기 때문에 정렬이 꼭 필요하다.
'Programming > Algorithm(ACM Problems)' 카테고리의 다른 글
| [백준] 2420번 : 사파리월드 / [자바] JAVA / 학습기록 (0) | 2022.01.20 |
|---|---|
| [백준] 2386번 : 도비의 영어 공부 / [자바] JAVA / 학습기록 (0) | 2022.01.20 |
| [백준] 1864번 : 문어다리 / [자바] JAVA / 학습기록 (1) | 2022.01.19 |
| [백준] 1731번 : 추론 / [자바] JAVA / 학습기록 (0) | 2022.01.16 |
| [백준] 1568번 : 새 / [자바] JAVA / 학습기록 (0) | 2022.01.16 |