본문 바로가기
알고리즘 문제 풀이/구현

백준 - ATM

by 가나무마 2022. 5. 24.
728x90

본 알고리즘 풀이는 Routine Study에서 진행하고 있습니다.

https://github.com/ROUTINE-STUDY/Algorithm

 

저를 포함한 구성원이 대부분 초보이므로, 원하시는분은 언제라도 들어오셔도 좋습니다.

 

GitHub - ROUTINE-STUDY/Algorithm: 초보 알고리즘 스터디 / 누구나 참여 가능

초보 알고리즘 스터디 / 누구나 참여 가능 :runner:. Contribute to ROUTINE-STUDY/Algorithm development by creating an account on GitHub.

github.com

문의는 댓글 바람.

 

문제 출처 : https://www.acmicpc.net/problem/11399

 

[문제 설명]

모든 사람이 인출하는데 필요한 최소한의 시간을 구하여라.

 

[접근 방법]

문제를 보자마자 운영체제의 스케쥴링이 생각났습니다.

전체 인원의 대기 시간이 짧으려면 SJF(Shortest Job First)로 하는 게 가장 좋습니다.

따라서, 걸리는 시간을 오름차순으로 정렬하고 누적합을 하면 됩니다.

 

import java.io.BufferedReader
import java.io.InputStreamReader

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    val N = readLine().toInt()
    val array = readLine().split(" ").map { it.toInt() }.toIntArray()
    array.sort()

    var sum = 0
    var temp = 0
    for (i in array.indices) {
        temp += array[i]
        sum += temp
    }

    println(sum)
}

 

728x90
반응형