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