jacketList

11399 ATM 본문

알고리즘/백준

11399 ATM

ukkkk7 2023. 11. 14. 22:11
728x90
반응형

 

 

문제: 1대 있는 ATM에서 N명의 사람이 줄을 서있고 각 사람이 돈을 인출하는데 걸리는 시간이 다르게 주어지기 때문에 줄을 서는 순서에 따라 전체 인원이 돈을 인출하는 시간의 합이 달라지게 된다. 사람수와 각 사람이 인출하는데 걸리는 시간이 주어질 때 전체 사람이 인출하는데 드는 시간의 합 중 최솟값을 출력하는 문제이다.

 

 

해설:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;


public class Main {


    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());


        //각 사람이 돈을 인출하는데 걸리는 시간을 배열에 담기 위해 n의 길이인 배열 선언
        int[] arr = new int[n];

        StringTokenizer st = new StringTokenizer(br.readLine());

        for(int i=0; i<arr.length; i++){

            arr[i] = Integer.parseInt(st.nextToken());

        }


        //인출 시간이 짧은 순서부터 정렬
        Arrays.sort(arr);

        //총 인출 시간을 출력할 변수
        int sum = 0;
        //인출 시간을 누적할 변수
        int add = 0;


        for(int i=0; i<arr.length; i++){

            //작은값부터 정렬을 해놓았기 때문에 for문을 돌면서 작은값부터 순서대로 add에 누적시킨다.
            add += arr[i];
            //누적시킨 add값은 각 사람이 인출하는데 걸린 시간이므로 이 값을 다시 sum에 누적시켜 최솟값을 구한다.
            sum += add;

        }


        System.out.println(sum);

    }


}

 

 

 

 

728x90
반응형

'알고리즘 > 백준' 카테고리의 다른 글

백준:9251 - LCS(Longest Common Subsequence, 최장 공통 부분 수열)  (0) 2024.04.17
1018 체스판 다시 칠하기  (0) 2023.11.14
진법변환2 11005  (0) 2023.10.25
진법 변환 2745번  (1) 2023.10.24
10809 알파벳 찾기  (0) 2023.09.28