Algorithm/Java

[백준/JAVA] 11399번: ATM

dbfl9911 2024. 7. 17. 09:36
반응형

https://www.acmicpc.net/problem/11399

 

- 정답 코드

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()); // 5
        int[] list = new int[N];

        StringTokenizer st = new StringTokenizer(br.readLine());
        for(int i = 0; i < N; i++) {
            list[i] = Integer.parseInt(st.nextToken()); // [3,1,4,3,2]
        }

        Arrays.sort(list); // [1,2,3,3,4]

        int sum = 0;
        int time = 0;  // 현재 사람까지의 누적 시간 저장

        for(int i = 0; i < N; i++) {
            time += list[i]; // 현재 사람의 인출 시간 + 누적 시간 
            sum += time;
        }

        System.out.println(sum);
    }
}

- 문제 풀이

 

  • 각 사람의 인출 시간을 오름차순으로 정렬했습니다.
  • 각 사람의 인출 시간을 누적 계산하여 최종 합계를 구했습니다.

계산 과정:

  • 1번 사람: 1분
  • 2번 사람: 1+2 = 3분
  • 3번 사람: 1+2+3 = 6분
  • 4번 사람: 1+2+3+3 = 9분
  • 5번 사람: 1+2+3+3+4 = 13분

최종 합계: 1 + 3 + 6 + 9 + 13 = 32

 

반응형