-
[백준][Kotlin]11399번 ATM백준 2023. 2. 27. 23:25728x90
문제의 해당 문구를 보면 알 수 있듯이 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 3+1+4 = 8분이 필요하게 된다. 4번 사람은 3+1+4+3 = 11분, 5번 사람은 3+1+4+3+2 = 13분이 걸리게 된다. 이 경우에 각 사람이 돈을 인출하는데 필요한 시간의 합은 3+4+8+11+13 = 39분이 된다.
해당 문제는 간단히 말하자면 누적합의 합계를 구하는 문제였습니다.
하기는 작성한 코드와 실행 결과 입니다.
import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.lang.Math.max import java.util.* data class info(val idx: Int, val value: Int) fun main() { // val s = System.currentTimeMillis() var br = BufferedReader(InputStreamReader(System.`in`)) // var bw = BufferedWriter(OutputStreamWriter(System.out)) var st = StringTokenizer(br.readLine()) val N = st.nextToken().toInt() // 자료의 개수 //var sb = StringBuilder() var arr = IntArray(N){0} st = StringTokenizer(br.readLine()) repeat(N){ arr[it] = st.nextToken().toInt() } Arrays.sort(arr) var arr2 = IntArray(N){0} arr2[0] = arr[0] for(i in 1 .. arr.size-1){ arr2[i] = arr2[i-1]+arr[i] } print(arr2.sum()) // bw.flush() // bw.close() // val e = System.currentTimeMillis() // println((e-s)/1000.0) }
'백준' 카테고리의 다른 글
[백준]1517번 버블 소트 (0) 2023.03.03 [백준][Kotlin]17298번 오큰수 (0) 2023.02.27 [백준][Kotlin]11286번 절댓값 힙 (0) 2023.02.27 [백준][Kotlin]11003번 최솟값 찾기 (0) 2023.02.27 [백준][Kotlin]10989번 수 정렬하기3 (0) 2023.02.27