츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 23054번 참가자 명단 파이썬(Python)
1) 문제번호 : 23056번
2) 문제 출처
https://www.acmicpc.net/problem/23056
2. 문제
백남이의 모교인 백준고등학교에서 체육대회를 개최하려 한다.
백남이는 학생들의 체육대회 신청을 관리하게 되었다.
체육대회는 1부터 N 까지의 학급만 참여하며, 각 학급당 최대 M 명까지 선착순으로 참가할 수 있다. 단, N 은 짝수이다.
또한, 체육대회의 팀을 학급이 홀수일 때 청팀, 짝수일 때 백팀으로 나누기로 했다.
이에 따라 백남이는 체육대회 참가자 명단 프로그램을 제작하려 한다.
- 청팀을 먼저, 백팀을 나중에 출력한다.
- 각각의 팀에 대해 학급을 오름차순으로 출력한다.
- 각각의 학급에 대해 학생의 이름을 길이가 짧은 것부터, 길이가 같다면 사전 순으로 출력한다.
3. 제약사항
4. 입력
첫째 줄에 학급 수인 N 과 학급당 신청 가능한 인원수 M 이 주어진다. (N 은 짝수이고 2≤N≤10 , 1≤M≤10 )
둘째 줄부터 신청된 순서대로 학생의 학급과 이름이 주어진다. 학생의 학급은 N 을 초과하지 않는다. 이름은 모두 소문자이며 15자를 초과하지 않는다.
학급과 이름이 동일한 학생은 존재하지 않는다.
신청할 수 있는 최대 학생 수는 500명이다.
입력의 마지막은 0 0으로 나타낸다.
5. 출력
첫째 줄부터 백남이의 체육대회 참가자 명단 프로그램에 맞게 학생의 학급과 이름을 공백으로 구분하여 출력한다.
6. 풀이
- 청팀과 백팀의 리스트를 나눠서 입력을 받고, 학급당 신청 가능한 인원 수를 체크하기 위한 리스트를 만들었다.
- 그래서, 학급당 신청 가능 수가 M보다 작으면 입력을 받는다.
- 여기서 정렬 실수를 했는데, 정렬 순서는 반 번호, 이름 길이, 이름 순서에 따라 정렬을 해야 한다.
- 반 번호와 이름을 문자열로 입력을 받는데, 반 번호 정렬을 문자열 기준으로 정렬하여 틀렸다.
- 반 번호 정렬을 할 때, 반 번호를 int형으로 변환하여 정렬하면 된다.
7. 소스 코드
import sys
input=sys.stdin.readline
N, M = map(int, input().split()) # 학급 수 N, 학급당 신청 가능한 인원 수 M
temp_even = [] # 짝수 백팀
temp_odd = [] # 홀수 청팀
temp_num = [0,0,0,0,0,0,0,0,0,0] # 반 수 제한
while True :
num, name = map(str, input().split()) #반과 이름 입력
# 입력값이 0이면 종료
if num== '0' and name == '0' : break
#출전 가능 인원 M이 안됐으면
if temp_num[int(num)-1] < M :
# 반 출전한 인원 1 증가 시키고
temp_num[int(num)-1] += 1
# 백팀(짝수)면
if int(num) % 2 == 0:
temp_even.append([num, name])
# 청팀(홀수)면
else:
temp_odd.append([num, name])
# 반 숫자 정렬 후, 이름 정렬
temp_odd.sort(key = lambda x : (int(x[0]), len(x[1]), x[1]))
temp_even.sort(key = lambda x : (int(x[0]), len(x[1]), x[1]))
# 청팀 출력
for i,j in temp_odd :
print(i,j)
# 백팀 출력
for i,j in temp_even :
print(i,j)
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 백준 1964번 오각형, 오각형, 오각형... 파이썬(Python) (0) | 2021.11.28 |
---|---|
[백준 알고리즘] 백준 14264번 정육각형과 삼각형 파이썬(Python) (0) | 2021.11.09 |
[백준 알고리즘] 백준 10773번 제로 파이썬(Python) (0) | 2021.10.08 |
[백준 알고리즘] 백준 23027번 1번부터 문제의 상태가…? 파이썬(Python) (0) | 2021.10.08 |
[백준 알고리즘] 백준 23080번 스키테일 암호 파이썬(Python) (0) | 2021.10.06 |
[백준 알고리즘] 백준 10179번 쿠폰 자바(JAVA) (0) | 2021.09.08 |
[백준 알고리즘] 백준 10156번 과자 자바(JAVA) (0) | 2021.09.07 |
[백준 알고리즘] 백준 15921번 수찬은 마린보이야!! 자바(JAVA) (0) | 2021.09.06 |
최근댓글