728x90
본 알고리즘 풀이는 Routine Study에서 진행하고 있습니다.
https://github.com/ROUTINE-STUDY/Algorithm
저를 포함한 구성원이 대부분 초보이므로, 원하시는분은 언제라도 들어오셔도 좋습니다.
문의는 댓글 바람.
문제 출처 : 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
반응형
'알고리즘 문제 풀이 > 구현' 카테고리의 다른 글
백준 - 11729 : 하노이의 탑(Kotlin) (0) | 2022.07.06 |
---|---|
백준 - 2503 : 숫자 야구(Kotlin) (0) | 2022.07.05 |
백준 - 사탕 박사 고창영(Kotlin) (0) | 2022.04.05 |
백준 - 과제는 끝나지 않아!(Java, Kotlin) (0) | 2022.04.04 |
백준 - 3의 배수(Kotlin) (0) | 2022.03.25 |