https://www.acmicpc.net/problem/20006
20006번: 랭킹전 대기열
모든 생성된 방에 대해서 게임의 시작 유무와 방에 들어있는 플레이어들의 레벨과 아이디를 출력한다. 시작 유무와 플레이어의 정보들은 줄 바꿈으로 구분되며 레벨과 아이디는 한 줄에서 공백
www.acmicpc.net
백준 20006번 : 랭킹전 대기열
접근 방식
1. 먼저 입력받은 모든 사용자의 레벨과 닉네임을 묶어 people이라는 리스트에 저장한다.
2. 사용자의 리스트를 돌면서, 들어갈 수 있는 방이 있는지 검색한다.
2-1. 들어갈 수 있는 방이 없다면, 처음 들어가는 사용자의 레벨과 [레벨, 닉네임]을 묶어 rooms이라는 리스트에 저장한다.
2-2. 들어갈 수 있는 방이 있다면, 해당 방의 리스트에 현재 사용자의 [레벨,닉네임]을 묶어 연결하여 저장한다.
3. rooms 리스트를 돌면서, 사용자 닉네임의 사전순으로 정렬하고 순서대로 출력한다.
코드 (해결 못함)
p, m = map(int, input().split())
rooms = []
people = []
#일단 입력받음
for i in range(p) :
level, name = input().split()
people.append([int(level), name])
for level, name in people:
flag = False #들어간지, 들어가지않은지 확인하기 위한 플래그
#방을 돌면서 검색함
for i in range(len(rooms)):
if len(rooms[i][1]) == m:
continue
# 들어갈 수 있는 방이 있음
if abs(level-rooms[i][0]<=10):
flag = True
rooms[i][1].append([level, name])
break
# 대기방에 들어 갈 수 없으면 새로운 방 생성
if not flag:
rooms.append([level, [[level, name]]])
for room in range(len(rooms)) :
if len(rooms[room][1]) == m :
print('Started!')
for i in range(len(rooms[room][1])) :
print(rooms[room][1][i][0], rooms[room][1][i][1])
else :
print('Waiting!')
for i in range(len(rooms[room][1])) :
print(rooms[room][1][i][0], rooms[room][1][i][1])
해결하지 못한 이유... 정렬이 되지 않는다 ㅜ
sort와 lambda 사용해서 계속해서 정렬해보려 했는데 정렬이 안된다... 이유를 모르겠다 그것만 해결하면 완벽한데 ㅠㅠ
어 떻 게 해야될 까요... . . .
'알고리즘 > Python' 카테고리의 다른 글
[백준] 파이썬 - 2331번 : 반복수열 (0) | 2023.06.17 |
---|---|
[백준] python 파이썬 - 촌수계산 (0) | 2023.06.13 |
[백준] python 파이썬 - 케빈 베이컨의 6단계 법칙 (0) | 2023.06.13 |
[백준] 파이썬 - 10451번 : 순열 사이클 (0) | 2023.06.10 |
[알고리즘] python(파이썬) - 트럭 주차 (0) | 2023.06.07 |