[Algorithm] 20006. 랭킹전 대기열

유지민·2024년 2월 14일
0

Algorithm

목록 보기
31/75
post-thumbnail

20006. 랭킹전 대기열

20006 문제 보기

Difficulty : Silver 2

Status : Failed -> Solved

Time : 00:36

접근 방식

별도 알고리즘을 적용하는 것이 있다기보다,
리스트에 있는 요소들을 잘 넣어서 관리하고 출력 기준에 맞게 정렬을 해주면 되는 문제였다.

최종 코드

import sys
input = sys.stdin.readline

p, m = map(int, input().rstrip().split()) # p: 플레이어 수, m: 방 정원
room = []

for _ in range(p):
  l, n = input().rstrip().split()
  flag = False # 매칭 가능한 방이 있는지 체크하기 위한 플래그
  for room_list in room:
    # 게임 플레이가 가능한 인원 수 미달, 절대값을 통해 -10 ~ +10 범위 체크
    if len(room_list) < m and abs(int(l) - room_list[0][0]) <= 10:
      room_list.append((int(l), n))
      flag = True # 매칭 가능한 방이 있으므로, True로 변경
      break
  if not flag: # 매칭 가능한 방이 없을 경우
    room.append([(int(l), n)]) # 새 방을 만들고, 입장시킴

for room_list in room:
  print('Started!' if len(room_list) == m else 'Waiting!')
  room_list.sort(key= lambda x: x[-1]) # 닉네임에 맞춰 정렬
  for l, n in room_list:
    print(l, n)

배운점

▶️ 쉬운 시뮬레이션 문제였음에도 첫 시도에서 실수를 했다. 문제 조건과 내가 구현한 코드 꼼꼼히 살펴보기!

profile
끊임없이 도전하며 사고하는 주니어 Web 개발자 유지민입니다.

0개의 댓글