회의실 예약

발자·2023년 5월 9일
0

Softeer

목록 보기
5/17

문제

# 회의실 수, 예약 수
N, M = map(int, input().split())

# 예약 현황 딕셔너리
room = {}

# 회의실 이름 등록
for i in range(N):
    room[input()] = [0] * (19)

# 회의실 예약 등록
for i in range(M):
    room_name, start, end = input().split()
    
    # 숫자로 변환
    start = int(start)
    end = int(end)

    # 예약 시간 등록
    for j in range(start, end):
        room[room_name][j] = 1

# 회의실 이름의 오름차순으로 출력
room = dict(sorted(room.items()))

# 정보 출력
for room_name in room.keys():
    # 첫째 줄 { Room 회의실이름: } 출력
    print(f"Room {room_name}:")
    # 예약 가능한 시간이 없다면, Not available을 출력
    if 0 not in room[room_name][9:18]:
        print('Not available')
    else:
        i, start, end = 9, 0, 0
        # 가능한 시간 저장
        available = []
        # 가능한 시간 확인
        while i <= 18:
            if room[room_name][i] == 0 and start == 0:
                start = i
            elif (room[room_name][i] == 1 or (room[room_name][i] == 0 and i == 18)) and start != 0:
                end = i
                available.append((2-len(str(start)))*"0" + str(start) + "-" + (2-len(str(end)))*"0" + str(end))
                start, end = 0, 0
            i += 1

        # { n available: } 출력
        print(f"{len(available)} available:")
        for j in available:
            print(j)
    # 각 회의실에 대한 정보 사이에 ----- 출력
    if room_name != list(room.keys())[-1]:
        print("-----")

0개의 댓글