Algorithm

[Java] 백준 2355번 시그마

로춘남 2022. 2. 16. 14:39
728x90


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

 

2355번: 시그마

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

www.acmicpc.net

A와 B 사이의 전체적인 합을 구하는 문제

흔히 알고 있는 n(n+1) / 2   1부터 n까지의 합 공식을 살짝만 변형시켜주면 된다. 문제는 1부터 B가 아니라 A부터 B이기 때문에 조건을 설정해서 식을 약간 변형해줘야함.

그결과 (A + B ) * (A - B + 1) /2 라는 공식이 나오게 되었다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BJ2355 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        long A = Integer.parseInt(st.nextToken());
        long B = Integer.parseInt(st.nextToken());

        if(B>A) {
            long temp = B;
            B = A;
            A = temp;
        }

        long result = (A+B) * (A-B+1) / 2;
        System.out.println(result);
    }
}

처음에 int로 설정했엇는데, 오류가나서 문제의 범위를 다시 확인하고 long 타입을 적용시켜주었다.

 

처음에는 배열을 이용해서 for문을 통해 i가 돌때마다 배열에 넣고, 그 내부의 총합을 구하려고했는데, 잘 안되가지고,

무난하게 if문으로 해결...

728x90