자바 백준 14241번
실버 3
https://www.acmicpc.net/problem/14241
문제 보기
분류: 수학
코드 풀이
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 슬라임의 개수 N 입력
int N = sc.nextInt();
// 슬라임의 크기 배열 입력
int[] slimeSizes = new int[N];
for (int i = 0; i < N; i++) {
slimeSizes[i] = sc.nextInt();
}
// 크기를 기준으로 오름차순 정렬
Arrays.sort(slimeSizes);
// 최대 점수 계산
int maxScore = calculateMaxScore(slimeSizes);
// 최대 점수 출력
System.out.println(maxScore);
}
// 최대 점수를 계산하는 함수
private static int calculateMaxScore(int[] slimeSizes) {
// 최대 점수 초기화
int maxScore = 0;
// 가장 작은 크기의 슬라임이 합쳐지면서 최대 점수 계산
for (int i = slimeSizes.length - 1; i > 0; i--) {
// 현재 크기와 바로 앞의 크기를 합치기
int currentSize = slimeSizes[i];
int prevSize = slimeSizes[i - 1];
int mergedSize = currentSize + prevSize;
// 합친 크기를 다시 배열에 삽입
slimeSizes[i - 1] = mergedSize;
// 점수 계산하여 누적
maxScore += currentSize * prevSize;
}
// 최종적인 최대 점수 반환
return maxScore;
}
}
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 24264 - 알고리즘 수업 - 알고리즘의 수행 시간 3 (0) | 2024.02.07 |
---|---|
[Java] 백준 풀기 4948 - 베르트랑 공준 (0) | 2024.02.06 |
[Java] 백준 풀기 2089 - -2진수 (0) | 2024.01.31 |
[Java] 백준 풀기 1699 - 제곱수의 합 (0) | 2024.01.30 |
[Java] 백준 풀기 2407 - 조합 (0) | 2024.01.27 |