@@ -5,34 +5,48 @@ class Solution {
5
5
val recordsArr = Array (10000 ) { LinkedList <String >() }
6
6
val feeArr = Array (10000 ) { 0 }
7
7
8
+ data class Time (var hour : Int , var min : Int ) {
9
+
10
+ constructor (hourAndMin: List <Int >) : this (hourAndMin[0 ], hourAndMin[1 ]) {
11
+ this .hour = hourAndMin[0 ]
12
+ this .min = hourAndMin[1 ]
13
+ }
14
+
15
+ companion object {
16
+ fun calcUsingTime (inTime : Time , outTime : Time ): Int {
17
+ return (outTime.hour * 60 + outTime.min - inTime.hour * 60 - inTime.min)
18
+ }
19
+ }
20
+ }
21
+
22
+ fun String.timeSplit () = split(" :" ).map { it.toInt() }
23
+
8
24
fun solution (fees : IntArray , records : Array <String >): IntArray {
9
25
var answer: IntArray = intArrayOf()
26
+
10
27
for (i in records) {
11
28
val (time, num, inout) = i.split(" " )
12
29
if (inout == " IN" ) {
13
30
recordsArr[num.toInt()].add(time)
14
31
} else {
15
32
// out이 나올경우에는 바로 해당번호에 대해 처리를 해준다.
16
- val inTime = recordsArr[num.toInt()].removeLast()
33
+ val inTime = Time ((recordsArr[num.toInt()].removeLast().timeSplit()))
34
+ val outTime = Time (time.timeSplit())
17
35
18
- val inHM = inTime.split(" :" ).map { it.toInt() }
19
- val outHM = time.split(" :" ).map { it.toInt() }
20
-
21
- val usingTime = outHM[0 ] * 60 + outHM[1 ] - inHM[0 ] * 60 - inHM[1 ]
36
+ val usingTime = Time .calcUsingTime(inTime, outTime)
22
37
feeArr[num.toInt()] + = usingTime
23
38
}
24
39
}
25
40
26
41
for (i in 0 until 10000 ) {
27
42
while (recordsArr[i].isNotEmpty()) {
28
- val now = recordsArr[i].removeFirst().split( " : " ).map { it.toInt() }
29
- val usingTime = 23 * 60 + 59 - now[ 0 ] * 60 - now[ 1 ]
43
+ val now = Time ( recordsArr[i].removeFirst().timeSplit())
44
+ val usingTime = Time .calcUsingTime( Time ( 23 , 59 ), now)
30
45
feeArr[i] + = usingTime
31
46
}
32
47
}// In은 했는데 Out은 안한경우 위에서 처리가 안되므로 처음부터 돌면서 23:59에서 빼준다.
33
48
34
49
35
-
36
50
// 요금 계산하기
37
51
val arr = mutableListOf<Int >()
38
52
for (i in 0 until 10000 ) {
0 commit comments