문제 링크
link 📃
문제 풀이
- input으로 주어지는 미팅룸 이름을 key로 넣고 value는 순서 값을 넣어준다.
ex ) santafe:0 aerocity:1 porter:2
- 미팅룸 예약 리스트는 2차원 배열로 만들어서 [미팅룸][9(9시~18시 타임)] 형태의 배열로 만들었다. 9는 9~10, 10~11, 12~13 ... 17~18을 각각의 한칸으로 표현해서 9 크기로 표현했다.
- 미팅룸 시간에 예약이 되어있으면 -1, 기본값은 0으로 해서 미팅룸을 돌면서 0일때는 예약가능하여 시작 및 끝 시간을 문자열로 만들어 주었다.
문제 후기
- 오랜만에 swea의 입출력을 느껴보는 것 같았다..
- 프로그래머스가 얼마나 편한지 다시한번 느끼게 되었고 차라리 백준 입출력이 깔끔하다는 것을 느꼈다..!
- 객체를 sorted 후에 더이상 객체 형태로 남지 않는 다는 것을 까먹고 자꾸 객체를 불러와서 틀렸다.
해결 코드
Python
import sys
from collections import defaultdict
n, m= map(int, input().split())
meeting_name = defaultdict()
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("——")