백준 11399 ATM - JAVA

2025. 1. 29. 19:57·알고리즘/백준

11399 문제 링크


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

 

문제 설명


 

입출력


 

코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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 input = Integer.parseInt(br.readLine());
        int[] arr = new int[input];
        
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        for (int i = 0; i < input; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
        
        Arrays.sort(arr);
        
        int time = 0;
        int sum = 0;
        for(int i = 0; i < input; i++) {
            time += arr[i];
            sum += time;
        }
        
        bw.write(String.valueOf(sum));
        bw.flush();
    }
}
Colored by Color Scripter
cs

 

 

알고리즘 설명


그리디 알고리즘이란, 현재 상황에서 가장 최적의 선택을 반복적으로 선택하는 해결책을 구하는 알고리즘으로,
문제 해결을 효율적으로 해결할 수 있도록 돕는 알고리즘입니다.
 
해당 문제에서 최적의 선택은, 모든 대기인원의 평균 대기시간을 줄여주는 방식을 채택할 수 있습니다.
스케줄링 알고리즘을 알고 계신분들은 쉽게 생각하셨을텐데요,
바로 평균 대기시간을 낮추는 SJF(Shortest Job First)에 맞게, 실행시간이 짧은 숫자를 앞으로 배치하는 것입니다.
 
각 인원의 대기시간은, 앞선 모든 인원들의 인출시간을 합산한 것과 같기 때문에,
총 소요시간은, 1번 원소부터 마지막 원소까지, 각 원소의 인출시간과 대기시간을 더하여 누적합 계산을 하면 쉽게 계산할 수 있습니다.

 

코드 해석


입력 받은 인출시간을 배열에 저장하고, 인출시간이 짧은 것부터 오름차순으로 정렬합니다. 인원별 인출시간과 대기시간을 모두 합산해야 하기때문에, 각 인원의 총 소요시간(인출시간 + 대기시간)을 담아줄 time변수와 총 인원의 총 소요시간을 담아줄 sum변수를 선언하고, 각 작업마다 time의 값을 sum에 누적합 해줍니다.

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

백준 1932 정수 삼각형 - JAVA  (0) 2025.01.31
백준 24479 알고리즘 수업 - 깊이 우선 탐색 1 - JAVA  (1) 2025.01.30
백준 1149 RGB거리 - JAVA  (0) 2025.01.28
백준 2346 풍선 터뜨리기 - JAVA  (0) 2025.01.27
백준 9184 신나는 함수 실행 - JAVA  (0) 2025.01.24
'알고리즘/백준' 카테고리의 다른 글
  • 백준 1932 정수 삼각형 - JAVA
  • 백준 24479 알고리즘 수업 - 깊이 우선 탐색 1 - JAVA
  • 백준 1149 RGB거리 - JAVA
  • 백준 2346 풍선 터뜨리기 - JAVA
BIS's tech Blog
BIS's tech Blog
Welcome to Kanghyun's tech blog :)
  • BIS's tech Blog
    벼익숙의 기술 블로그
    BIS's tech Blog
  • 전체
    오늘
    어제
    • 분류 전체보기 (68)
      • 알고리즘 (54)
        • 백준 (45)
        • 프로그래머스 (9)
      • CS 스터디 (14)
        • CS - JAVA (11)
        • CS - DB (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    자료구조
    CS
    브루트포스
    Lv2
    java
    완전탐색
    알고리즘 고득점 kit
    백트래킹
    dp
    DFS
    재귀
    BFS
    기술질문
    Baekjoon
    프로그래머스
    너비 우선 탐색
    동적 계획
    깊이 우선 탐색
    Top-Down
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BIS's tech Blog
백준 11399 ATM - JAVA
상단으로

티스토리툴바