[Softeer] 회의실 예약 (python)

j-ij-i·2022년 12월 15일
1

알고리즘 문제풀이

목록 보기
4/10

문제 링크

link 📃 

문제 풀이

  1. input으로 주어지는 미팅룸 이름을 key로 넣고 value는 순서 값을 넣어준다.
    ex ) santafe:0 aerocity:1 porter:2
  2. 미팅룸 예약 리스트는 2차원 배열로 만들어서 [미팅룸][9(9시~18시 타임)] 형태의 배열로 만들었다. 9는 9~10, 10~11, 12~13 ... 17~18을 각각의 한칸으로 표현해서 9 크기로 표현했다.
  3. 미팅룸 시간에 예약이 되어있으면 -1, 기본값은 0으로 해서 미팅룸을 돌면서 0일때는 예약가능하여 시작 및 끝 시간을 문자열로 만들어 주었다.

문제 후기

  • 오랜만에 swea의 입출력을 느껴보는 것 같았다..
  • 프로그래머스가 얼마나 편한지 다시한번 느끼게 되었고 차라리 백준 입출력이 깔끔하다는 것을 느꼈다..!
  • 객체를 sorted 후에 더이상 객체 형태로 남지 않는 다는 것을 까먹고 자꾸 객체를 불러와서 틀렸다.

해결 코드

Python

import sys
from collections import defaultdict

n, m= map(int, input().split())

meeting_name = defaultdict()

# 9-10-11-12-13-14-15-16-17-18
meeting_res_list = [[0 for _ in range(9)] for _ in range(n)]

for i in range(n):
    room_name = input()
    meeting_name[room_name] = i

for _ in range(m):
    name, start, end = input().split()
    for i in range( int(start)-9, int(end)-9):
        meeting_res_list[meeting_name[name]][i] = -1

meeting_name_sorted = (sorted(meeting_name.keys()))
total_cnt = 0
for key in meeting_name_sorted:
    print(f"Room {key}:")
    cnt = 0
    arr = []
    m_key = meeting_name[key]
    times = ''
    flag = False
    for meet in range(9):
        if not flag and meeting_res_list[m_key][meet] == 0:
            flag = True
            if meet == 0:
                times += "09"
            else:
                times += str(meet+9)
            times += '-'
        elif flag and meeting_res_list[m_key][meet] == 0:
            continue
        elif flag and meeting_res_list[m_key][meet] == -1:
            times += str(meet+9)
            arr.append(times)
            times = ''
            flag = False
            cnt += 1
    if flag:
        times += "18"
        arr.append(times)
        cnt += 1
    if cnt == 0:
        print("Not available")
    else:
        print(f"{cnt} available:")
        for time in arr:
            print(time)
    total_cnt+=1            
    if total_cnt < n:
        print("——")
profile
안녕하세요, 프론트엔드를 좋아하는 개발자 jiji입니다.

0개의 댓글