자바/코드트리

[코드트리] 효율적으로 더하기 - 자바(Java)

Jakorithm 2024. 6. 9. 00:21
728x90

문제

https://www.codetree.ai/problems/add-efficiently?&utm_source=clipboard&utm_medium=text

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

 

a1 ~ an으로 이루어져 있는 n개의 정수가 주어졌을 때 다음의 연산을 실행합니다.

  • (a1) + (a1 + a2) + (a1 + a2 + a3) + ... + (a1 + a2 + a3 + ... + an)

각 정수의 순서를 바꿔도 된다고 할 때, 총 합의 최솟값을 구하는 프로그램을 작성해보세요.

 

입력 예시

5
3 1 4 3 2

 

출력 예시

32

 

 

코드

첫 번째 줄에는 정수 N이 주어집니다.

두 번째 줄에는 각 정수가 공백을 두고 주어집니다.

  • 1 ≤ n ≤ 1,000
  • 1 ≤ 수열 a의 원소 ≤ 1,000
import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(br.readLine());
        int[] nums = new int[n];
        int result = 0;

        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            nums[i] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(nums);

        for (int i = 0; i < n; i++) {
            result += nums[i] * (n - i);
        }

        bw.write(String.valueOf(result));
        bw.flush();
        bw.close();
    }
}

 

728x90