🔻PS/Baekjoon

[Baekjoon] 백준 2533 랭킹전 대기열 Python

_니지 2024. 9. 16. 21:48

https://www.acmicpc.net/problem/20006

 

❗풀이방법

  • 이중 for문 사용
  • 현재 룸의 레벨에 맞는지와 정원이 다 찼는지 확인하기
    • 확인 후 현재 룸에 사람을 넣었다면 flag를 True로 변경
  • 현재 사람이 아무데도 들어가지 못했다면 새로운 방 생성
  • 각 룸에 누가 있는지 출력 시 닉네임을 기준으로 정렬 후 출력

 

❗코드

import sys
input = sys.stdin.readline


p, m = map(int, input().split(" "))

people = []
rooms = []
standard = []

for _ in range(p):
    level, nickname = input().rstrip().split(" ")
    level = int(level)
    people.append([level, nickname])


for i in range(p):
    now = people[i]
    flag = False

    for j, room in enumerate(rooms):
        # 현재 룸의 레벨이 now랑 맞는지
        if len(room) < m and standard[j] - 10  <= now[0] and now[0] <= standard[j] + 10:
            room.append(now)
            flag = True
            break
    # 안 맞는 경우
    if not flag:
        rooms.append([now])
        standard.append(now[0])


for room in rooms:
    if len(room) == m:
        print("Started!")
    else:
        print("Waiting!")

    room = sorted(room, key=lambda x : x[1])

    for p in room:
        print(*p)

 

 

 

 

 

728x90
반응형