본문 바로가기
Programming/Algorithm(ACM Problems)

[백준] 2355번 : 시그마 / [자바] JAVA / 학습기록

by jongmln_ 2022. 1. 19.

https://www.acmicpc.net/problem/2355

 

2355번: 시그마

첫째 줄에 두 정수 A, B가 주어진다. (-2,147,483,648 ≤ A, B ≤ 2,147,483,647)

www.acmicpc.net


[백준] 2355번 : 시그마 문제

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

[백준] 2355번 : 시그마 입출력예제


[전체 코드]

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 의 결괏값은 엄연히 다르기 때문에 정렬이 꼭 필요하다.