제목에 적힌 문제이고, 시뮬레이션 문제입니다.
필자는 게임을 시작할 수 있는 방을 먼저 출력하고 기다리는 방은 마지막에 출력하면 되는 줄 알았다.
하지만 문제에서 요구하는 출력은 생성된 방의 시간 순서이므로 Started! 방과 Waiting! 방이 섞여 출력돼야 한다.
아래 그림은 테스트 케이스가 주어지고 해당 테스트 케이스가 어떻게 설계 되고 결과적으로 어떻게 출력되어야 하는지 보여줍니다.
p, m = map(int, input().split())
people = []
for i in range(p):
lv, id = input().split()
people.append([int(lv), id])
rooms = []
for lv, id in people:
flag = False
for i in range(len(rooms)):
if len(rooms[i][1]) == m:
continue
# 들어갈 수 있는 방이 있으면 입장
if rooms[i][0] - 10 <= lv <= rooms[i][0] + 10:
flag = True
rooms[i][1].append([lv, id])
break
# 대기방에 들어 갈 수 없으면 새로운 방 생성
if not flag:
rooms.append([lv, [[lv, id]]])
# 방이 생성된 시간 순서로 출력
for i in range(len(rooms)):
if len(rooms[i][1]) == m:
print('Started!')
tmp_ids = sorted(rooms[i][1], key=lambda x: x[1])
for j in range(m):
print(*tmp_ids[j])
else:
print('Waiting!')
tmp_ids = sorted(rooms[i][1], key=lambda x: x[1])
for j in range(len(tmp_ids)):
print(*tmp_ids[j])