Skip to content

Commit 41f21c9

Browse files
committed
주차요금계산 해결
1 parent ba1cad0 commit 41f21c9

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

src/4week/acw/주차요금계산.kt

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import java.util.LinkedList
2+
3+
class Solution {
4+
5+
val recordsArr = Array(10000) { LinkedList<String>() }
6+
val feeArr = Array(10000) { 0 }
7+
8+
fun solution(fees: IntArray, records: Array<String>): IntArray {
9+
var answer: IntArray = intArrayOf()
10+
for (i in records) {
11+
val (time, num, inout) = i.split(" ")
12+
if (inout == "IN") {
13+
recordsArr[num.toInt()].add(time)
14+
} else {
15+
//out이 나올경우에는 바로 해당번호에 대해 처리를 해준다.
16+
val inTime = recordsArr[num.toInt()].removeLast()
17+
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]
22+
feeArr[num.toInt()] += usingTime
23+
}
24+
}
25+
26+
for (i in 0 until 10000) {
27+
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]
30+
feeArr[i] += usingTime
31+
}
32+
}//In은 했는데 Out은 안한경우 위에서 처리가 안되므로 처음부터 돌면서 23:59에서 빼준다.
33+
34+
35+
36+
//요금 계산하기
37+
val arr = mutableListOf<Int>()
38+
for (i in 0 until 10000) {
39+
40+
if (feeArr[i] == 0) {
41+
continue
42+
} else {
43+
44+
if (feeArr[i] <= fees[0]) {
45+
arr.add(fees[1])
46+
//기본요금 부과
47+
} else {
48+
val ceilCheck = (feeArr[i] - fees[0]) % fees[2] != 0//
49+
//올림하라했으므로 올림해야하는지 check해주기
50+
51+
var remain = if (ceilCheck) {
52+
(feeArr[i] - fees[0]) / fees[2] + 1
53+
} else {
54+
(feeArr[i] - fees[0]) / fees[2]
55+
}
56+
57+
58+
arr.add(fees[1] + remain * fees[3])
59+
60+
}
61+
}
62+
63+
}
64+
answer = arr.toIntArray()
65+
66+
67+
return answer
68+
}
69+
70+
71+
}

0 commit comments

Comments
 (0)