|
| 1 | +# [Gold II] 부품 대여장 - 21942 |
| 2 | + |
| 3 | +[문제 링크](https://www.acmicpc.net/problem/21942) |
| 4 | + |
| 5 | +### 성능 요약 |
| 6 | + |
| 7 | +메모리: 85396 KB, 시간: 468 ms |
| 8 | + |
| 9 | +### 분류 |
| 10 | + |
| 11 | +구현, 자료 구조, 문자열, 집합과 맵, 해시를 사용한 집합과 맵, 파싱 |
| 12 | + |
| 13 | +### 제출 일자 |
| 14 | + |
| 15 | +2025년 11월 26일 19:42:32 |
| 16 | + |
| 17 | +### 문제 설명 |
| 18 | + |
| 19 | +<p>송훈이는 로봇 동아리 회원이다. 로봇 동아리에서 필요한 부품이 있을 경우 자유롭게 빌려서 쓰고 다시 돌려놓으면 된다.</p> |
| 20 | + |
| 21 | +<p>하지만 부품 정리를 하다가 부품 관리가 너무 힘들어져 새로운 시스템을 도입하려고 한다.</p> |
| 22 | + |
| 23 | +<p>부품을 빌려갈 경우 <strong>부품 대여장</strong>에 정보를 반드시 작성해야한다. 또한 빌려간 부품을 반납 할 경우에도 <strong>부품 대여장</strong>에 정보를 작성해야한다.</p> |
| 24 | + |
| 25 | +<p>또한 대여기간을 정하고 대여기간을 넘길 경우 1분당 벌금을 부여하도록 하는 시스템이다.</p> |
| 26 | + |
| 27 | +<p>만약 대여기간이 5분, 1분당 벌금이 5원이라 했을 때 대여한 시각이 <strong>2021년 1월 1일 1시 5분</strong>이라면 <strong>2021년 1월 1일 1시 10분까지</strong> 반납해야한다.</p> |
| 28 | + |
| 29 | +<p><strong>2021년 1월 1일 1시 14분</strong>에 반납을 했다면 4분 늦었기 때문에 벌금을 20원을 내야한다.</p> |
| 30 | + |
| 31 | +<p>부품 대여장에 쓰는 형식은 아래와 같다.</p> |
| 32 | + |
| 33 | +<pre>yyyy-MM-dd hh:mm [부품 이름] [동아리 회원 닉네임]</pre> |
| 34 | + |
| 35 | +<p>아래는 예시를 위한 부품 대여장에 작성된 정보이다. 대여기간이 5분, 벌금은 1원이라 가정하자.</p> |
| 36 | + |
| 37 | +<pre>2021-01-01 09:12 arduino tony9402 |
| 38 | +2021-01-01 09:13 monitor chansol |
| 39 | +2021-01-01 09:18 arduino tony9402 |
| 40 | +2021-01-01 09:18 monitor chansol</pre> |
| 41 | + |
| 42 | +<p>위의 정보를 정리하면 아래와 같다.</p> |
| 43 | + |
| 44 | +<pre>tony9402가 2021년 1월 1일 오전 9시 12분에 arduino를 빌렸다. |
| 45 | +chansol이 2021년 1월 1일 오전 9시 13분에 monitor를 빌렸다. |
| 46 | +tony9402가 2021년 1월 1일 오전 9시 18분에 arduino를 반납했다. |
| 47 | +chansol이 2021년 1월 1일 오전 9시 18분에 monitor를 반납했다.</pre> |
| 48 | + |
| 49 | +<p>tony9402는 1분 늦게 반납했기 때문에 벌금 1원을 내야한다.</p> |
| 50 | + |
| 51 | +<p>부품을 대여할 때 지켜야 하는 조건이 있다.</p> |
| 52 | + |
| 53 | +<ol> |
| 54 | + <li>한 사람이 같은 종류의 부품을 두개 이상 대여하고 있는 상태일 수 없다.</li> |
| 55 | + <li>한 사람이 같은 시각에 서로 다른 종류의 부품들을 대여하는 것이 가능하다.</li> |
| 56 | + <li>같은 사람이더라도, 대여 기간은 부품마다 별도로 적용된다.</li> |
| 57 | +</ol> |
| 58 | + |
| 59 | +### 입력 |
| 60 | + |
| 61 | + <p>첫 번째 줄에 부품 대여장에 작성된 정보의 개수 $N$, 대여기간 $L$, 벌금 $F$이 공백으로 구분되어 주어진다.</p> |
| 62 | + |
| 63 | +<p>대여기간 형식은 <code>DDD/hh:mm</code>으로 <code>DDD</code>는 일, <code>hh</code>는 시간, <code>mm</code>은 분을 의미한다. (<code>000/00:00</code> 는 주어지지 않는다.)</p> |
| 64 | + |
| 65 | +<p>두 번째 줄부터 $N + 1$번째 줄까지 <strong>시간순</strong>으로 부품 대여장에 작성한 정보 (시각, 부품 이름 $P$, 회원 닉네임 $M$)이 공백으로 구분되어 주어진다.</p> |
| 66 | + |
| 67 | +<p>빌린 시각의 형식은 <code>yyyy-MM-dd hh:mm</code>으로 <code>yyyy</code>는 연도, <code>MM</code>는 월, <code>dd</code>는 일, <code>hh</code>는 시간, <code>mm</code>는 분을 의미한다. 이 문제에서 들어오는 연도는 항상 2021년도이다.</p> |
| 68 | + |
| 69 | +<p>부품 이름 $P$는 알파벳 소문자로만 이루어져 있다. 즉, 부품 이름에 공백이 없다.</p> |
| 70 | + |
| 71 | +<p>회원 닉네임 $M$은 알파벳 소문자와 숫자$(0$ ~ $9)$로만 이루어져있다. 즉, 회원 닉네임에 공백이 없다.</p> |
| 72 | + |
| 73 | +### 출력 |
| 74 | + |
| 75 | + <p>벌금을 내야하는 사람들을 <strong>사전순</strong>으로 동아리 회원 닉네임 $M$와 내야하는 벌금을 한 줄씩 출력한다.</p> |
| 76 | + |
| 77 | +<p>만약 벌금을 내야하는 사람들이 없는 경우는 -1을 출력한다.</p> |
| 78 | + |
0 commit comments