Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 삼성코테기출
- 3dgs
- 최단거리추적
- 20006
- 그리디알고리즘
- mcp튜토리얼
- 너비우선탐색
- 토스유튜브
- mcp사용법
- 시뮬레이션
- 시계토끼제니쌤
- 구현
- 수학
- 20922
- 28215
- tinycudann
- 토스만능문장
- 토스독학
- 토스
- 그리디
- 백준
- 미지의 공간탈출
- 그래프탐색
- 그래프
- BFS
- 코테
- Python
- mcp란
- 토익스피킹
- DP
Archives
- Today
- Total
Victory in my life
Baekjoon 20006 | 랭킹전 대기열(Python) 본문
📌문제
SILVER2 / 구현 / 시뮬레이션
https://www.acmicpc.net/problem/20006


📌문제 분석 및 설계
이 문제는 나만 그런거같지만 이해가 잘 안됐다..
문제 설명에서 시스템순서에서 '입장 가능한 방이 있다면 입장시킨 후 방의 정원이 모두 찰 때까지 대기시킨다'란 말이 혼란을 일으킨것 같았다. 하지만 이 대기시킨다는 것은 모든 플레이어가 입장을 마친 후 방마다 정원확인 후에 하는 과정이었다..
그러니까 나는 시스템 설명이 다 순서대로 돌아가며, 입장이 한명씩되는 줄 알았다.. 왜냐면 입력 설명에도 입력된 순서대로 게임을 시작한다길래...
아무튼 대기 및 시작은 모든 플레이어가 방에 들어가고 하는 과정이라는 것..!
문제를 이해한 후에는 순수 구현문제라 쉽게 구현했다.
📌소스 코드
p,m=map(int, input().split())
room=[]
for i in range(p):
level,name=input().split()
level=int(level)
if i==0:
room.append([(level,name)])
else:
roomIn=False
for i,r in enumerate(room): # 매칭 가능한 방 탐색
if len(r)==m: #정원이 다 찬 방이면 패스
continue
first_l,_=r[0]
if first_l-10<=level<=first_l+10: #처음 입장 플레이어의 레벨을 기준으로 -10부터 +10까지 입장 가능
room[i].append((level,name))
roomIn=True
break
if roomIn==False: ## 방 없다면 새로운 방을 생성하고 입장
room.append([(level,name)])
for r in room:
if len(r)==m:
print('Started!')
else:
print('Waiting!')
r.sort(key=lambda x:x[1])
for level,name in r:
print(level,name)
'CodingTest > Baekjoon' 카테고리의 다른 글
Baekjoon 2178 | 미로 탐색(Python) (0) | 2025.02.25 |
---|---|
Baekjoon 1138 | 한 줄로 서기(Python) (0) | 2025.02.25 |
Baekjoon 1913 | 달팽이(Python) (0) | 2025.02.21 |
Baekjoon 14916 | 거스름돈 (Python) (0) | 2025.02.19 |
Baekjoon 14929 | 귀찮아 (SIB)(Python) (0) | 2025.02.19 |