랭킹전 대기열 - 실버 2 (백준, 구현)

2023. 1. 19. 14:49코딩 테스트 준비

728x90
반응형
import sys

input = sys.stdin.readline
P, M = map(int,input().split())
rooms = []

for _ in range(P):
  player, nick = input().split()
  rooms.append([player, nick])

level = 0
ans = []
x = 0

while rooms:
  room = []
  na = []
  for idx, i in enumerate(rooms):
    player, nick = i[0], i[1]
    if len(room) == 0:
      room.append([player, nick])
      level = int(player)
    elif len(room) < M and level-10 <= int(player) and int(player)<= level+10:
        room.append([player, nick])
    else:
      na.append(rooms[idx])

  room.sort(key=lambda x : x[1])
  ans.append(room)
  rooms = na

  
for i in ans:
  if len(i) == M:
    print("Started!")
  else:
    print("Waiting!")
  for j in i:
    print(j[0], j[1])

na와 room 리스트를 반복마다 초기화하고 room의 길이를 제한을 줘서 M만큼 차면 넘어가도록 설계했다.

 

2번 조건의 1은 반복문이 시작됐을때 바로 넣으면 해결이 된다. 

 

풀 수 있어서 기분이 좋다. 사용한 알고리즘은 그리디이지 않을까 싶다.

728x90
반응형