문제설명
수열을 입력받고 두 수를 합치면 x*y만큼의 점수를 얻고 합친 두 수는 x+y가 된다고 할 때 얻을 수 있는 가장 큰 점수를 구하는 문제입니다.
작동 순서
1. 수열의 길이를 입력받습니다.
2. 수열을 입력받습니다.
3. 수열을 정렬합니다.
4. 수열을 앞의 수부터 차례대로 합쳐가면서 점수를 더합니다.
5. 최종 점수를 출력합니다.
소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class 백준_14241번_슬라임합치기 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
Integer[] slime = new Integer[N];
int sum=0;
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0;i<N;i++) slime[i]=Integer.parseInt(st.nextToken());
Arrays.sort(slime);
int size=slime[0];
for(int i=1;i<N;i++) {
sum+=slime[i]*size;
size+=slime[i];
}
System.out.print(sum);
}
}