✏️ 문제
호텔을 운영 중인 코니는 최소한의 객실만을 사용하여 예약 손님들을 받으려고 합니다. 한 번 사용한 객실은 퇴실 시간을 기준으로 10분간 청소를 하고 다음 손님들이 사용할 수 있습니다.예약 시각이 문자열 형태로 담긴 2차원 배열 book_time이 매개변수로 주어질 때, 코니에게 필요한 최소 객실의 수를 return 하는 solution 함수를 완성해주세요.
🤯 풀이 방법
이렇게 하는 게 맞는지는 모르겠지만 그냥 전체를 다 돌았습니다
누적합으로 풀 수도 있다고 하는데 음.. 모르겠다
일단 입력 받은 예약 목록을 끝나는 시간을 기준으로 정렬한다. 늦게 끝나는 경우를 먼저 확인할 것임
그리고 정답 배열을 만들어 그 안에 방을 하나씩 만든다고 생각한다.
예약 값 하나당 정답 배열을 돌면서 이미 들어있는 예약 목록에 겹치지 않게 추가할 수 있는지 확인한다.
가능하면 그 리스트에 포함하고, 아닌 경우 새로운 방을 정답 배열에 생성한다.
마지막에 정답 배열의 길이를 출력하면 필요한 방의 개수와 같음
이때 청소 시간 10분! 을 관리하는 걸 잊지 말자
그걸 위해서 split을 이용해 10분씩 더해서 크기를 비교했음
👾 구현 코드 (파이썬)
def solution(book_time):
answer = []
# 끝나는 시간을 기준으로 정렬
book_time.sort(key = lambda x : x[1], reverse=True)
for book in book_time:
con = False
for ans in answer:
a = int(ans[-1][0].split(":")[0]) * 60 + int(ans[-1][0].split(":")[1])
b = int(book[1].split(":")[0]) * 60 + int(book[1].split(":")[1]) + 10 # 10분 청소시간
if a >= b:
# 가능한 경우 연결
ans.append(book)
con = True
break
# 가능한 경우가 없었던 경우 새 리스트 생성
if con == False:
answer.append([book])
return len(answer)
'Algorithm > programmers' 카테고리의 다른 글
[programmers] Lv.2 모음사전 (python) (0) | 2023.07.26 |
---|---|
[programmers] Lv.1 성격 유형 검사하기 (python) (1) | 2023.07.15 |
[programmers] Lv.2 미로 탈출 (python) (0) | 2023.06.23 |
[programmers] Lv.2 주차 요금 계산 (javascript) (0) | 2023.06.22 |
[programmers] Lv.1 3진법 뒤집기 (javascript) (0) | 2023.02.08 |