[Python] 알고리즘/Silver
[23056] 참가자 명단 (Python)
-Becca-
2021. 11. 9. 19:58
[문제]
https://www.acmicpc.net/problem/23056
23056번: 참가자 명단
첫째 줄에 학급 수인 $N$과 학급당 신청 가능한 인원수 $M$이 주어진다. ($N$은 짝수이고 $2\leq N \leq 10$, $1\leq M \leq 10$) 둘째 줄부터 신청된 순서대로 학생의 학급과 이름이 주어진다. 학생의 학급은
www.acmicpc.net
알고리즘 분류는 문자열, 정렬 입니다.
참가자 명단은 학급 오름차순, 이름의 길이, 사전 순 순서로 정렬합니다. (다중 정렬 필요)
[코드]
import sys
N, M = map(int, sys.stdin.readline().split())
li = list()
dt = dict()
while True:
join = sys.stdin.readline().rstrip()
if join == "0 0":
break
join = join.split()
dt[join[0]] = dt.get(join[0], 0) + 1
if dt[join[0]] <= M:
li.append(join)
li = sorted(li, key=lambda x: (int(x[0]), len(x[1]), x[1]))
blue = list()
white = list()
for i in range(len(li)):
if int(li[i][0]) % 2 == 0:
white.append(" ".join(li[i]))
else:
blue.append(" ".join(li[i]))
for i in blue:
print(i)
for i in white:
print(i)