Skip to content

Commit b4d9d1c

Browse files
committed
[level 2] Title: 주차 요금 계산, Time: 3.64 ms, Memory: 75 MB -BaekjoonHub
1 parent 484e8bc commit b4d9d1c

2 files changed

Lines changed: 488 additions & 0 deletions

File tree

Lines changed: 392 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,392 @@
1+
# [level 2] 주차 요금 계산 - 92341
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/92341)
4+
5+
### 성능 요약
6+
7+
메모리: 75 MB, 시간: 3.64 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > 2022 KAKAO BLIND RECRUITMENT
12+
13+
### 채점결과
14+
15+
정확성: 100.0<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2026년 07월 18일 14:16:00
20+
21+
### 문제 설명
22+
23+
<h5>문제 설명</h5>
24+
25+
<p>주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 아래는 하나의 예시를 나타냅니다.</p>
26+
27+
<ul>
28+
<li><strong>요금표</strong></li>
29+
</ul>
30+
<table class="table">
31+
<thead><tr>
32+
<th>기본 시간(분)</th>
33+
<th>기본 요금(원)</th>
34+
<th>단위 시간(분)</th>
35+
<th>단위 요금(원)</th>
36+
</tr>
37+
</thead>
38+
<tbody><tr>
39+
<td>180</td>
40+
<td>5000</td>
41+
<td>10</td>
42+
<td>600</td>
43+
</tr>
44+
</tbody>
45+
</table>
46+
<p>&nbsp;</p>
47+
48+
<ul>
49+
<li><strong>입/출차 기록</strong></li>
50+
</ul>
51+
<table class="table">
52+
<thead><tr>
53+
<th>시각(시:분)</th>
54+
<th>차량 번호</th>
55+
<th>내역</th>
56+
</tr>
57+
</thead>
58+
<tbody><tr>
59+
<td>05:34</td>
60+
<td>5961</td>
61+
<td>입차</td>
62+
</tr>
63+
<tr>
64+
<td>06:00</td>
65+
<td>0000</td>
66+
<td>입차</td>
67+
</tr>
68+
<tr>
69+
<td>06:34</td>
70+
<td>0000</td>
71+
<td>출차</td>
72+
</tr>
73+
<tr>
74+
<td>07:59</td>
75+
<td>5961</td>
76+
<td>출차</td>
77+
</tr>
78+
<tr>
79+
<td>07:59</td>
80+
<td>0148</td>
81+
<td>입차</td>
82+
</tr>
83+
<tr>
84+
<td>18:59</td>
85+
<td>0000</td>
86+
<td>입차</td>
87+
</tr>
88+
<tr>
89+
<td>19:09</td>
90+
<td>0148</td>
91+
<td>출차</td>
92+
</tr>
93+
<tr>
94+
<td>22:59</td>
95+
<td>5961</td>
96+
<td>입차</td>
97+
</tr>
98+
<tr>
99+
<td>23:00</td>
100+
<td>5961</td>
101+
<td>출차</td>
102+
</tr>
103+
</tbody>
104+
</table>
105+
<p>&nbsp;</p>
106+
107+
<ul>
108+
<li><strong>자동차별 주차 요금</strong></li>
109+
</ul>
110+
<table class="table">
111+
<thead><tr>
112+
<th>차량 번호</th>
113+
<th>누적 주차 시간(분)</th>
114+
<th>주차 요금(원)</th>
115+
</tr>
116+
</thead>
117+
<tbody><tr>
118+
<td>0000</td>
119+
<td>34 + 300 = 334</td>
120+
<td>5000 + <code>⌈</code>(334 - 180) / 10<code>⌉</code> x 600 = 14600</td>
121+
</tr>
122+
<tr>
123+
<td>0148</td>
124+
<td>670</td>
125+
<td>5000 +<code>⌈</code>(670 - 180) / 10<code>⌉</code>x 600 = 34400</td>
126+
</tr>
127+
<tr>
128+
<td>5961</td>
129+
<td>145 + 1 = 146</td>
130+
<td>5000</td>
131+
</tr>
132+
</tbody>
133+
</table>
134+
<ul>
135+
<li>어떤 차량이 입차된 후에 출차된 내역이 없다면, 23:59에 출차된 것으로 간주합니다.
136+
137+
<ul>
138+
<li><code>0000</code>번 차량은 18:59에 입차된 이후, 출차된 내역이 없습니다. 따라서, 23:59에 출차된 것으로 간주합니다.</li>
139+
</ul></li>
140+
<li>00:00부터 23:59까지의 입/출차 내역을 바탕으로 차량별 누적 주차 시간을 계산하여 요금을 일괄로 정산합니다. </li>
141+
<li>누적 주차 시간이 <code>기본 시간</code>이하라면, <code>기본 요금</code>을 청구합니다.<br></li>
142+
<li>누적 주차 시간이 <code>기본 시간</code>을 초과하면, <code>기본 요금</code>에 더해서, 초과한 시간에 대해서 <code>단위 시간</code> 마다 <code>단위 요금</code>을 청구합니다.
143+
144+
<ul>
145+
<li>초과한 시간이 <code>단위 시간</code>으로 나누어 떨어지지 않으면, <code>올림</code>합니다.<br></li>
146+
<li><code>⌈</code>a<code>⌉</code> : a보다 작지 않은 최소의 정수를 의미합니다. 즉, <code>올림</code>을 의미합니다.</li>
147+
</ul></li>
148+
</ul>
149+
150+
<p>주차 요금을 나타내는 정수 배열 <code>fees</code>, 자동차의 입/출차 내역을 나타내는 문자열 배열 <code>records</code>가 매개변수로 주어집니다. <strong>차량 번호가 작은 자동차부터</strong> 청구할 주차 요금을 차례대로 정수 배열에 담아서 return 하도록 solution 함수를 완성해주세요.</p>
151+
152+
<h5>제한사항</h5>
153+
154+
<ul>
155+
<li><p><code>fees</code>의 길이 = 4</p>
156+
157+
<ul>
158+
<li>fees[0] = <code>기본 시간(분)</code></li>
159+
<li>1 ≤ fees[0] ≤ 1,439 </li>
160+
<li>fees[1] = <code>기본 요금(원)</code></li>
161+
<li>0 ≤ fees[1] ≤ 100,000</li>
162+
<li>fees[2] = <code>단위 시간(분)</code></li>
163+
<li>1 ≤ fees[2] ≤ 1,439</li>
164+
<li>fees[3] = <code>단위 요금(원)</code> </li>
165+
<li>1 ≤ fees[3] ≤ 10,000</li>
166+
</ul></li>
167+
<li><p>1 ≤ <code>records</code>의 길이 ≤ 1,000</p>
168+
169+
<ul>
170+
<li><code>records</code>의 각 원소는 <code>"시각 차량번호 내역"</code> 형식의 문자열입니다.</li>
171+
<li><code>시각</code>, <code>차량번호</code>, <code>내역</code>은 하나의 공백으로 구분되어 있습니다.</li>
172+
<li><code>시각</code>은 차량이 입차되거나 출차된 시각을 나타내며, <code>HH:MM</code> 형식의 길이 5인 문자열입니다.
173+
174+
<ul>
175+
<li><code>HH:MM</code>은 00:00부터 23:59까지 주어집니다.</li>
176+
<li>잘못된 시각("25:22", "09:65" 등)은 입력으로 주어지지 않습니다.</li>
177+
</ul></li>
178+
<li><code>차량번호</code>는 자동차를 구분하기 위한, `0'~'9'로 구성된 길이 4인 문자열입니다.<br></li>
179+
<li><code>내역</code>은 길이 2 또는 3인 문자열로, <code>IN</code> 또는 <code>OUT</code>입니다. <code>IN</code>은 입차를, <code>OUT</code>은 출차를 의미합니다. </li>
180+
<li><code>records</code>의 원소들은 시각을 기준으로 오름차순으로 정렬되어 주어집니다.</li>
181+
<li><code>records</code>는 하루 동안의 입/출차된 기록만 담고 있으며, 입차된 차량이 다음날 출차되는 경우는 입력으로 주어지지 않습니다.</li>
182+
<li>같은 시각에, 같은 차량번호의 내역이 2번 이상 나타내지 않습니다.</li>
183+
<li>마지막 시각(23:59)에 입차되는 경우는 입력으로 주어지지 않습니다.</li>
184+
<li>아래의 예를 포함하여, 잘못된 입력은 주어지지 않습니다.
185+
186+
<ul>
187+
<li>주차장에 없는 차량이 출차되는 경우</li>
188+
<li>주차장에 이미 있는 차량(차량번호가 같은 차량)이 다시 입차되는 경우</li>
189+
</ul></li>
190+
</ul></li>
191+
</ul>
192+
193+
<hr>
194+
195+
<h5>입출력 예</h5>
196+
<table class="table">
197+
<thead><tr>
198+
<th>fees</th>
199+
<th>records</th>
200+
<th>result</th>
201+
</tr>
202+
</thead>
203+
<tbody><tr>
204+
<td>[180, 5000, 10, 600]</td>
205+
<td><code>["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"]</code></td>
206+
<td>[14600, 34400, 5000]</td>
207+
</tr>
208+
<tr>
209+
<td>[120, 0, 60, 591]</td>
210+
<td><code>["16:00 3961 IN","16:00 0202 IN","18:00 3961 OUT","18:00 0202 OUT","23:58 3961 IN"]</code></td>
211+
<td>[0, 591]</td>
212+
</tr>
213+
<tr>
214+
<td>[1, 461, 1, 10]</td>
215+
<td><code>["00:00 1234 IN"]</code></td>
216+
<td>[14841]</td>
217+
</tr>
218+
</tbody>
219+
</table>
220+
<hr>
221+
222+
<h5>입출력 예 설명</h5>
223+
224+
<p><strong>입출력 예 #1</strong></p>
225+
226+
<p>문제 예시와 같습니다.</p>
227+
228+
<p><strong>입출력 예 #2</strong></p>
229+
230+
<ul>
231+
<li><strong>요금표</strong></li>
232+
</ul>
233+
<table class="table">
234+
<thead><tr>
235+
<th>기본 시간(분)</th>
236+
<th>기본 요금(원)</th>
237+
<th>단위 시간(분)</th>
238+
<th>단위 요금(원)</th>
239+
</tr>
240+
</thead>
241+
<tbody><tr>
242+
<td>120</td>
243+
<td>0</td>
244+
<td>60</td>
245+
<td>591</td>
246+
</tr>
247+
</tbody>
248+
</table>
249+
<p>&nbsp;</p>
250+
251+
<ul>
252+
<li><strong>입/출차 기록</strong></li>
253+
</ul>
254+
<table class="table">
255+
<thead><tr>
256+
<th>시각(시:분)</th>
257+
<th>차량 번호</th>
258+
<th>내역</th>
259+
</tr>
260+
</thead>
261+
<tbody><tr>
262+
<td>16:00</td>
263+
<td>3961</td>
264+
<td>입차</td>
265+
</tr>
266+
<tr>
267+
<td>16:00</td>
268+
<td>0202</td>
269+
<td>입차</td>
270+
</tr>
271+
<tr>
272+
<td>18:00</td>
273+
<td>3961</td>
274+
<td>출차</td>
275+
</tr>
276+
<tr>
277+
<td>18:00</td>
278+
<td>0202</td>
279+
<td>출차</td>
280+
</tr>
281+
<tr>
282+
<td>23:58</td>
283+
<td>3961</td>
284+
<td>입차</td>
285+
</tr>
286+
</tbody>
287+
</table>
288+
<p>&nbsp;</p>
289+
290+
<ul>
291+
<li><strong>자동차별 주차 요금</strong></li>
292+
</ul>
293+
<table class="table">
294+
<thead><tr>
295+
<th>차량 번호</th>
296+
<th>누적 주차 시간(분)</th>
297+
<th>주차 요금(원)</th>
298+
</tr>
299+
</thead>
300+
<tbody><tr>
301+
<td>0202</td>
302+
<td>120</td>
303+
<td>0</td>
304+
</tr>
305+
<tr>
306+
<td>3961</td>
307+
<td>120 + 1 = 121</td>
308+
<td>0 +<code>⌈</code>(121 - 120) / 60<code>⌉</code>x 591 = 591</td>
309+
</tr>
310+
</tbody>
311+
</table>
312+
<ul>
313+
<li><code>3961</code>번 차량은 2번째 입차된 후에는 출차된 내역이 없으므로, 23:59에 출차되었다고 간주합니다. </li>
314+
</ul>
315+
316+
<p>&nbsp;</p>
317+
318+
<p><strong>입출력 예 #3</strong></p>
319+
320+
<ul>
321+
<li><strong>요금표</strong></li>
322+
</ul>
323+
<table class="table">
324+
<thead><tr>
325+
<th>기본 시간(분)</th>
326+
<th>기본 요금(원)</th>
327+
<th>단위 시간(분)</th>
328+
<th>단위 요금(원)</th>
329+
</tr>
330+
</thead>
331+
<tbody><tr>
332+
<td>1</td>
333+
<td>461</td>
334+
<td>1</td>
335+
<td>10</td>
336+
</tr>
337+
</tbody>
338+
</table>
339+
<p>&nbsp;</p>
340+
341+
<ul>
342+
<li><strong>입/출차 기록</strong></li>
343+
</ul>
344+
<table class="table">
345+
<thead><tr>
346+
<th>시각(시:분)</th>
347+
<th>차량 번호</th>
348+
<th>내역</th>
349+
</tr>
350+
</thead>
351+
<tbody><tr>
352+
<td>00:00</td>
353+
<td>1234</td>
354+
<td>입차</td>
355+
</tr>
356+
</tbody>
357+
</table>
358+
<p>&nbsp;</p>
359+
360+
<ul>
361+
<li><strong>자동차별 주차 요금</strong></li>
362+
</ul>
363+
<table class="table">
364+
<thead><tr>
365+
<th>차량 번호</th>
366+
<th>누적 주차 시간(분)</th>
367+
<th>주차 요금(원)</th>
368+
</tr>
369+
</thead>
370+
<tbody><tr>
371+
<td>1234</td>
372+
<td>1439</td>
373+
<td>461 +<code>⌈</code>(1439 - 1) / 1<code>⌉</code>x 10 = 14841</td>
374+
</tr>
375+
</tbody>
376+
</table>
377+
<ul>
378+
<li><code>1234</code>번 차량은 출차 내역이 없으므로, 23:59에 출차되었다고 간주합니다.</li>
379+
</ul>
380+
381+
<hr>
382+
383+
<p>​</p>
384+
385+
<h5>제한시간 안내</h5>
386+
387+
<ul>
388+
<li>정확성 테스트 : 10초</li>
389+
</ul>
390+
391+
392+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

0 commit comments

Comments
 (0)