Skip to content

Commit 492711a

Browse files
committed
[Silver IV] Title: 참가자 명단, Time: 148 ms, Memory: 15072 KB -BaekjoonHub
1 parent a871bf7 commit 492711a

2 files changed

Lines changed: 111 additions & 0 deletions

File tree

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# [Silver IV] 참가자 명단 - 23056
2+
3+
[문제 링크](https://www.acmicpc.net/problem/23056)
4+
5+
### 성능 요약
6+
7+
메모리: 15072 KB, 시간: 148 ms
8+
9+
### 분류
10+
11+
구현, 정렬
12+
13+
### 제출 일자
14+
15+
2026년 3월 24일 22:57:21
16+
17+
### 문제 설명
18+
19+
<p style="text-align: center;"><img alt="" src="https://upload.acmicpc.net/a7fed846-80e3-4433-a3eb-c38604373f23/-/preview/" style="height: 500px; width: 500px;"><br>
20+
</p>
21+
22+
<p>백남이의 모교인 백준고등학교에서 체육대회를 개최하려 한다.</p>
23+
24+
<p>백남이는 학생들의 체육대회 신청을 관리하게 되었다.</p>
25+
26+
<p>체육대회는 1부터 <mjx-container class="MathJax" jax="CHTML" style="font-size: 111.4%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D441 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>N</mi></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$N$</span></mjx-container>까지의 학급만 참여하며, 각 학급당 최대 <mjx-container class="MathJax" jax="CHTML" style="font-size: 111.4%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D440 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>M</mi></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$M$</span></mjx-container>명까지 선착순으로 참가할 수 있다. 단, <mjx-container class="MathJax" jax="CHTML" style="font-size: 111.4%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D441 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>N</mi></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$N$</span></mjx-container>은 짝수이다.</p>
27+
28+
<p>또한, 체육대회의 팀을 학급이 홀수일 때 청팀, 짝수일 때 백팀으로 나누기로 했다.</p>
29+
30+
<p>이에 따라 백남이는 체육대회 참가자 명단 프로그램을 제작하려 한다.</p>
31+
32+
<ul>
33+
<li>청팀을 먼저, 백팀을 나중에 출력한다.</li>
34+
<li>각각의 팀에 대해 학급을 오름차순으로 출력한다.</li>
35+
<li>각각의 학급에 대해 학생의 이름을 길이가 짧은 것부터, 길이가 같다면 사전 순으로 출력한다.</li>
36+
</ul>
37+
38+
### 입력
39+
40+
<p>첫째 줄에 학급 수인 <mjx-container class="MathJax" jax="CHTML" style="font-size: 111.4%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D441 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>N</mi></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$N$</span></mjx-container>과 학급당 신청 가능한 인원수 <mjx-container class="MathJax" jax="CHTML" style="font-size: 111.4%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D440 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>M</mi></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$M$</span></mjx-container>이 주어진다. (<mjx-container class="MathJax" jax="CHTML" style="font-size: 111.4%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D441 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>N</mi></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$N$</span></mjx-container>은 짝수이고 <mjx-container class="MathJax" jax="CHTML" style="font-size: 111.4%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mn class="mjx-n"><mjx-c class="mjx-c32"></mjx-c></mjx-mn><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c2264"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="4"><mjx-c class="mjx-c1D441 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c2264"></mjx-c></mjx-mo><mjx-mn class="mjx-n" space="4"><mjx-c class="mjx-c31"></mjx-c><mjx-c class="mjx-c30"></mjx-c></mjx-mn></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mn>2</mn><mo>≤</mo><mi>N</mi><mo>≤</mo><mn>10</mn></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$2\leq N \leq 10$</span></mjx-container>, <mjx-container class="MathJax" jax="CHTML" style="font-size: 111.4%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mn class="mjx-n"><mjx-c class="mjx-c31"></mjx-c></mjx-mn><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c2264"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="4"><mjx-c class="mjx-c1D440 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c2264"></mjx-c></mjx-mo><mjx-mn class="mjx-n" space="4"><mjx-c class="mjx-c31"></mjx-c><mjx-c class="mjx-c30"></mjx-c></mjx-mn></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mn>1</mn><mo>≤</mo><mi>M</mi><mo>≤</mo><mn>10</mn></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$1\leq M \leq 10$</span></mjx-container>)</p>
41+
42+
<p>둘째 줄부터 신청된 순서대로 학생의 학급과 이름이 주어진다. 학생의 학급은 <mjx-container class="MathJax" jax="CHTML" style="font-size: 111.4%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D441 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>N</mi></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$N$</span></mjx-container>을 초과하지 않는다. 이름은 모두 소문자이며 15자를 초과하지 않는다.</p>
43+
44+
<p>학급과 이름이 동일한 학생은 존재하지 않는다.</p>
45+
46+
<p>신청할 수 있는 최대 학생 수는 500명이다.</p>
47+
48+
<p>입력의 마지막은 0 0으로 나타낸다.</p>
49+
50+
### 출력
51+
52+
<p>첫째 줄부터 백남이의 체육대회 참가자 명단 프로그램에 맞게 학생의 학급과 이름을 공백으로 구분하여 출력한다.</p>
53+
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import java.io.BufferedReader;
2+
import java.io.InputStreamReader;
3+
import java.util.*;
4+
5+
public class Main {
6+
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
static StringBuilder sb = new StringBuilder();
8+
static StringTokenizer st;
9+
10+
public static void main(String[] args) throws Exception {
11+
st = new StringTokenizer(br.readLine());
12+
int n = Integer.parseInt(st.nextToken());
13+
int m = Integer.parseInt(st.nextToken());
14+
15+
//학급 인원 추가
16+
Map<Integer, List<String>> students = new HashMap<>();
17+
18+
19+
while (true) {
20+
st = new StringTokenizer(br.readLine());
21+
int classNum = Integer.parseInt(st.nextToken());
22+
String studentName = st.nextToken();
23+
24+
if (classNum == 0) {
25+
break;
26+
}
27+
28+
//학급 번호에 추가
29+
students.putIfAbsent(classNum, new ArrayList<>());
30+
List<String> studentList = students.get(classNum);
31+
if (studentList.size() < m) {
32+
studentList.add(studentName);
33+
}
34+
}
35+
36+
for (Integer i : students.keySet()) {
37+
if (i % 2 != 0) {
38+
List<String> studentList = students.get(i);
39+
studentList.sort(Comparator.comparingInt(String::length).thenComparing(String::compareTo));
40+
for (String s : studentList) {
41+
System.out.printf("%d %s\n", i, s);
42+
}
43+
}
44+
}
45+
46+
for (Integer i : students.keySet()) {
47+
if (i % 2 == 0) {
48+
List<String> studentList = students.get(i);
49+
studentList.sort(Comparator.comparingInt(String::length).thenComparing(String::compareTo));
50+
for (String s : studentList) {
51+
System.out.printf("%d %s\n", i, s);
52+
}
53+
}
54+
}
55+
}
56+
57+
58+
}

0 commit comments

Comments
 (0)