1
+ """
2
+ 풀이시간: 20분
3
+
4
+ <input>
5
+ - fees: 주차 요금 (fees의 길이 = 4)
6
+ - fees[0]: 기본 시간(분)
7
+ - fees[1]: 기본 요금(원)
8
+ - fees[2]: 단위 시간(분)
9
+ - fees[3]: 단위 요금(원)
10
+
11
+ - records: 자동차의 입/출차 내역 (1 ≤ records의 길이 ≤ 1,000)
12
+ - 시각, 차량번호, 내역
13
+
14
+ <solution>
15
+ - 단순 구현!!
16
+
17
+ <시간 복잡도>
18
+ O(NlogN): 전체 코드 중 정렬이 가장 많은 시간 소요됨
19
+ """
20
+
21
+ import math
22
+
23
+
24
+ def solution (fees , records ):
25
+ """
26
+ fees: 주차요금
27
+ records: 자동차 입/출차내역
28
+ """
29
+ answer = [] # 차량번호가 작은 자동차부터 청구할 주차 요금
30
+ basic_time , basic_fee , unit_time , unit_fee = fees
31
+ # 전체 차량
32
+ cars = {}
33
+
34
+ for record in records :
35
+ time , num , status = record .split ()
36
+ time = int (time [:2 ]) * 60 + int (time [3 :]) # 시간을 분 단위로 변환
37
+ if num not in cars :
38
+ cars [num ] = []
39
+ cars [num ].append (time )
40
+
41
+ # 출차 기록이 없으면 23:59에 출차된 것으로 간주
42
+ for car , times in sorted (cars .items ()):
43
+ if len (times ) % 2 != 0 : # 입/출차 내역이 홀수이면 출차를 하지 않은 것
44
+ cars [car ].append (24 * 60 - 1 )
45
+
46
+ minutes = 0 # 누적 주차 시간(분)
47
+ while times :
48
+ out_time = times .pop () # 출차 시간
49
+ in_time = times .pop () # 입차 시간
50
+ minutes += out_time - in_time
51
+
52
+ # 누적 주차 요금
53
+ if minutes <= basic_time : # 기본시간 이하 -> 기본 요금
54
+ total_fee = basic_fee
55
+ else : # 기본 요금 + 단위 요금
56
+ total_fee = basic_fee + math .ceil ((minutes - basic_time ) / unit_time ) * unit_fee
57
+
58
+ answer .append (total_fee )
59
+
60
+ return answer
61
+
62
+ """
63
+ 정확성 테스트
64
+ 테스트 1 〉 통과 (0.04ms, 10.5MB)
65
+ 테스트 2 〉 통과 (0.03ms, 10.4MB)
66
+ 테스트 3 〉 통과 (0.05ms, 10.4MB)
67
+ 테스트 4 〉 통과 (0.08ms, 10.4MB)
68
+ 테스트 5 〉 통과 (0.27ms, 10.3MB)
69
+ 테스트 6 〉 통과 (0.31ms, 10.3MB)
70
+ 테스트 7 〉 통과 (1.53ms, 10.5MB)
71
+ 테스트 8 〉 통과 (0.85ms, 10.5MB)
72
+ 테스트 9 〉 통과 (0.18ms, 10.5MB)
73
+ 테스트 10 〉 통과 (1.27ms, 10.6MB)
74
+ 테스트 11 〉 통과 (1.96ms, 10.8MB)
75
+ 테스트 12 〉 통과 (2.07ms, 10.7MB)
76
+ 테스트 13 〉 통과 (0.04ms, 10.4MB)
77
+ 테스트 14 〉 통과 (0.03ms, 10.4MB)
78
+ 테스트 15 〉 통과 (0.03ms, 10.3MB)
79
+ 테스트 16 〉 통과 (0.02ms, 10.3MB)
80
+ """
0 commit comments