백준 BaekJoon 13900번: 순서쌍의 곱의 합 [Java] 자바

2020-10-25


문제

N개의 정수 중 서로 다른 위치의 두 수를 뽑는 모든 경우의 두 수의 곱의 합을 구하라.

예를 들어 N = 3이고 주어진 정수가 2, 3, 4일 때, 두 수를 뽑는 모든 경우는 (2, 3), (2, 4), (3, 4)이며 이때 각각의 곱은 6, 8, 12이다. 따라서 총합은 26이다.

입력

첫 번째 줄에는 입력 받을 정수의 개수 N(2 ≤ N ≤ 100,000)

두 번째 줄에는 N 개의 정수가 주어진다. 이때 입력 받는 정수들의 범위는 0이상 10,000 이하이다.

출력

모든 경우의 곱의 합을 출력한다.


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

public class TemplateA {
		public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(bf.readLine());
		String [] arr = bf.readLine().split(" ");
		
		//주어진 입력값 예시
		//(1*2)+(1*3)+(1*4)+(2*3)+(2*4)+(3*4)
		//앞의 항이 하나씩 커질수로 뒤에항의 곱해지는 값은 하나씩 적어짐
		//(1*(2+3+4))+(2(3*4))+(3*4)
		//위처럼 식을 바꿀 수 있음
		//위의 내용을 식을 코드로 바꾸면 아래와 같음
		
		int sum = 0;
		for(int i = 0; i < n - 1; i++) {
			int tempSum = 0;
			//앞에 곱해줄 수 i 0, 1, 2 순으로 바뀜 
			for(int j = i + 1; j < n; j++) {
				tempSum += Integer.parseInt(arr[j]);
				//더해서 곱해줄 뒤엣수 j i보다 하나 큰값부터 마지막 값가지 더해줌
			}
			sum += Integer.parseInt(arr[i]) * tempSum;
		}
		
		System.out.println(sum);
}
    }
    



 

출처 링크 : www.acmicpc.net/problem/13900

 

13900번: 순서쌍의 곱의 합

첫 번째 줄에는 입력 받을 정수의 개수 N(2 ≤ N ≤ 100,000) 두 번째 줄에는 N 개의 정수가 주어진다. 이때 입력 받는 정수들의 범위는 0이상 10,000 이하이다.

www.acmicpc.net