코딩테스트(연습)

22.06.13(백준_ATM_11399)

양빵빵 2022. 6. 13. 12:19

 

 

package datastructure.chap06.insertion;

import java.util.Arrays;
import java.util.Scanner;

public class Atm_11399 {
    public static void sort(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            int temp = arr[i];
            int j = i;
            while(j > 0 && arr[j-1] >= temp) {
                arr[j] = arr[j-1];
                j--;
            }
            arr[j] = temp;
        }
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int arr[] = new int[N];
        for (int i = 0; i < N; i++) {
            arr[i] = sc.nextInt();
        }

        sort(arr); // 삽입정렬

        // 구간합
        int[] S = new int[arr.length+1];
        for (int i = 1; i <= arr.length; i++) {
            S[i] = S[i - 1] + arr[i-1];
        }

        int result = 0;
        for (int i : S) {
            result += i;
        }

//        System.out.println(Arrays.toString(S));
        System.out.println(result);
    }
}

 

=== 선생님 풀이===

package datastructure.chap06.insertion;

import java.util.Scanner;

//백준 11399
public class 삽입정렬_문제01 {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        int[] A = new int[N]; // 수를 저장할 배열
        for (int i = 0; i < N; i++) {
            A[i] = sc.nextInt();
        }

        // 삽입 정렬
        for (int i = 1; i < N; i++) {
            int temp = A[i];

            int j = i;
            while (j > 0 && A[j - 1] >= temp) {
                A[j] = A[j - 1];
                j--;
            }
            A[j] = temp;
        }

        // 구간 합배열 생성
        int[] S = new int[N + 1];

        for (int i = 1; i < S.length; i++) {
            S[i] = S[i - 1] + A[i - 1];
        }

        // 합배열 총합 구하기
        int total = 0;
        for (int i = 1; i < S.length; i++) {
            total += S[i];
        }
        System.out.println(total);
    }
}