์•Œ๊ณ ๋ฆฌ์ฆ˜/๊ตฌํ˜„

[๋ฐฑ์ค€ 20006 ๐Ÿฅˆ] ๋žญํ‚น์ „ ๋Œ€๊ธฐ์—ด

1eehyunji 2023. 10. 7. 19:37

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

 

20006๋ฒˆ: ๋žญํ‚น์ „ ๋Œ€๊ธฐ์—ด

๋ชจ๋“  ์ƒ์„ฑ๋œ ๋ฐฉ์— ๋Œ€ํ•ด์„œ ๊ฒŒ์ž„์˜ ์‹œ์ž‘ ์œ ๋ฌด์™€ ๋ฐฉ์— ๋“ค์–ด์žˆ๋Š” ํ”Œ๋ ˆ์ด์–ด๋“ค์˜ ๋ ˆ๋ฒจ๊ณผ ์•„์ด๋””๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์‹œ์ž‘ ์œ ๋ฌด์™€ ํ”Œ๋ ˆ์ด์–ด์˜ ์ •๋ณด๋“ค์€ ์ค„ ๋ฐ”๊ฟˆ์œผ๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ ๋ ˆ๋ฒจ๊ณผ ์•„์ด๋””๋Š” ํ•œ ์ค„์—์„œ ๊ณต๋ฐฑ

www.acmicpc.net

๋ฌธ์ œ

์ข…์šด์ด๋Š” ์šด์˜ํ•˜๋˜ ๊ฒŒ์ž„์— ๋žญํ‚น์ „ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ํ”Œ๋ ˆ์ด์–ด ๊ฐ„์˜ ์‹ค๋ ฅ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž…์žฅ์„ ์‹ ์ฒญํ•˜๋ฉด ์ž์‹ ๊ณผ ๋น„์Šทํ•œ ๋ ˆ๋ฒจ์˜ ํ”Œ๋ ˆ์ด์–ด๋“ค์„ ๋งค์นญํ•˜์—ฌ ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•˜๊ฒŒ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

ํ”Œ๋ ˆ์ด์–ด ๊ฐ„ ๋งค์นญ์„ ํ•ด์ฃผ๋Š” ์‹œ์Šคํ…œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ž…์žฅ์„ ์‹ ์ฒญํ•˜์˜€์„ ๋•Œ ๋งค์นญ์ด ๊ฐ€๋Šฅํ•œ ๋ฐฉ์ด ์—†๋‹ค๋ฉด ์ƒˆ๋กœ์šด ๋ฐฉ์„ ์ƒ์„ฑํ•˜๊ณ  ์ž…์žฅ์‹œํ‚จ๋‹ค. ์ด๋–„ ํ•ด๋‹น ๋ฐฉ์—๋Š” ์ฒ˜์Œ ์ž…์žฅํ•œ ํ”Œ๋ ˆ์ด์–ด์˜ ๋ ˆ๋ฒจ์„ ๊ธฐ์ค€์œผ๋กœ -10๋ถ€ํ„ฐ +10๊นŒ์ง€ ์ž…์žฅ ๊ฐ€๋Šฅํ•˜๋‹ค.
  2. ์ž…์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐฉ์ด ์žˆ๋‹ค๋ฉด ์ž…์žฅ์‹œํ‚จ ํ›„ ๋ฐฉ์˜ ์ •์›์ด ๋ชจ๋‘ ์ฐฐ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ์‹œํ‚จ๋‹ค.
    1. ์ด๋•Œ ์ž…์žฅ์ด ๊ฐ€๋Šฅํ•œ ๋ฐฉ์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด ๋จผ์ € ์ƒ์„ฑ๋œ ๋ฐฉ์— ์ž…์žฅํ•œ๋‹ค.
  3. ๋ฐฉ์˜ ์ •์›์ด ๋ชจ๋‘ ์ฐจ๋ฉด ๊ฒŒ์ž„์„ ์‹œ์ž‘์‹œํ‚จ๋‹ค.

ํ”Œ๋ ˆ์ด์–ด์˜ ์ˆ˜ p, ํ”Œ๋ ˆ์ด์–ด์˜ ๋‹‰๋„ค์ž„ n, ํ”Œ๋ ˆ์ด์–ด์˜ ๋ ˆ๋ฒจ l, ๋ฐฉ ํ•œ๊ฐœ์˜ ์ •์› m์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋งค์นญํ•ด์ฃผ๊ณ  ์ตœ์ข…์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ฐฉ์˜ ์ƒํƒœ์™€ ์ž…์žฅ ํ”Œ๋ ˆ์ด์–ด๋“ค์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์ž.

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ํ”Œ๋ ˆ์ด์–ด์˜ ์ˆ˜ p(1 ≤ p ≤ 300)์™€ ๋ฐฉ์˜ ์ •์› m(1 ≤ m ≤ 300)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ p๊ฐœ์˜ ์ค„์—๋Š” ํ”Œ๋ ˆ์ด์–ด์˜ ๋ ˆ๋ฒจ l (1 ≤ l ≤ 500)๊ณผ ๋‹‰๋„ค์ž„ n์ด ๊ณต๋ฐฑ์„ ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค.

์ž…๋ ฅ๋œ ์ˆœ์„œ๋Œ€๋กœ ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•œ๋‹ค.

๋‹‰๋„ค์ž„์€ ์ค‘๋ณต๋˜์ง€ ์•Š์œผ๋ฉฐ ๊ณต๋ฐฑ์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ๋˜์–ด์žˆ์œผ๋ฉฐ ๋‹‰๋„ค์ž„์˜ ๊ธธ์ด๋Š” 16์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

์ถœ๋ ฅ

๋ชจ๋“  ์ƒ์„ฑ๋œ ๋ฐฉ์— ๋Œ€ํ•ด์„œ ๊ฒŒ์ž„์˜ ์‹œ์ž‘ ์œ ๋ฌด์™€ ๋ฐฉ์— ๋“ค์–ด์žˆ๋Š” ํ”Œ๋ ˆ์ด์–ด๋“ค์˜ ๋ ˆ๋ฒจ๊ณผ ์•„์ด๋””๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์‹œ์ž‘ ์œ ๋ฌด์™€ ํ”Œ๋ ˆ์ด์–ด์˜ ์ •๋ณด๋“ค์€ ์ค„ ๋ฐ”๊ฟˆ์œผ๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ ๋ ˆ๋ฒจ๊ณผ ์•„์ด๋””๋Š” ํ•œ ์ค„์—์„œ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

๋ฐฉ์€ ์ƒ์„ฑ๋œ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

๋ฐฉ์— ์žˆ๋Š” ํ”Œ๋ ˆ์ด์–ด๋“ค์˜ ์ •๋ณด๋Š” ๋‹‰๋„ค์ž„์ด ์‚ฌ์ „์ˆœ์œผ๋กœ ์•ž์„œ๋Š” ํ”Œ๋ ˆ์ด์–ด๋ถ€ํ„ฐ ์ถœ๋ ฅํ•œ๋‹ค.

๋ฐฉ์ด ์‹œ์ž‘๋˜์—ˆ์œผ๋ฉด Started!๋ฅผ ๋Œ€๊ธฐ ์ค‘์ด๋ฉด Waiting!์„ ์ถœ๋ ฅ์‹œํ‚จ๋‹ค.

 

๋ฌธ์ œ ํ’€์ด

  • ๋น„๊ต์  ๊ฐ„๋‹จํ•œ ๋‹จ์ˆœ ๊ตฌํ˜„๋ฌธ์ œ์ด๋‹ค!
import sys

p, m = map(int, sys.stdin.readline().split(' '))

# ์ฒซ๋ฒˆ์งธ ํ”Œ๋ ˆ์ด์–ด์˜ ๋ฐฉ ์ถ”๊ฐ€
firstl, firstn=sys.stdin.readline().strip().split(' ')
rooms=[]
rooms.append([(int(firstl), firstn)])
for _ in range(p-1):
    level, nickname = sys.stdin.readline().strip().split(' ')
    level=int(level)
    # ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ
    # 1) ๋ฐฉ์˜ ์ธ์›์ด m๋ณด๋‹ค ์ž‘๊ณ , ์ฒซ๋ฒˆ์งธ ์ž…์žฅํ•œ ํ”Œ๋ ˆ์ด์–ด์˜ ๋ ˆ๋ฒจ๊ณผ์˜ ์ฐจ์ด๊ฐ€ -10~+10์ด๋ผ๋ฉด
    for room_no in range(len(rooms)):
        room_level=rooms[room_no][0][0]
        room_user=len(rooms[room_no])
        if room_user<m and room_level-10<=level and level<=room_level+10:
            rooms[room_no].append((level, nickname))
            break
    # ๊ธฐ์กด ๋ฐฉ ์ค‘์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์ด ์—†๋‹ค๋ฉด
    else:
        rooms.append([(level, nickname)])

for room in rooms:
    if len(room)==m:
        print("Started!")
        room.sort(key=lambda x:x[1])
        for player in room:
            print(player[0], player[1])
    else:
        print("Waiting!")
        room.sort(key=lambda x: x[1])
        for player in room:
            print(player[0], player[1])