이 포스팅은 자바 8버전으로 풀이가 됐습니다.
문제 출처
https://www.acmicpc.net/problem/5635
5635번: 생일
어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오.
www.acmicpc.net
문제
어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 반에 있는 학생의 수 n이 주어진다. (1 ≤ n ≤ 100)
다음 n개 줄에는 각 학생의 이름과 생일이 "이름 dd mm yyyy"와 같은 형식으로 주어진다. 이름은 그 학생의 이름이며, 최대 15글자로 이루어져 있다. dd mm yyyy는 생일 일, 월, 연도이다. (1990 ≤ yyyy ≤ 2010, 1 ≤ mm ≤ 12, 1 ≤ dd ≤ 31) 주어지는 생일은 올바른 날짜이며, 연, 월 일은 0으로 시작하지 않는다.
이름이 같거나, 생일이 같은 사람은 없다.
출력
첫째 줄에 가장 나이가 적은 사람의 이름, 둘째 줄에 가장 나이가 많은 사람 이름을 출력한다.
코드
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
// 5635번
public class Main {
public static void main(String[] args) throws IOException {
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(rd.readLine());
String text[][] = new String[n][4];
for(int i=0; i<n;i++) {
StringTokenizer st = new StringTokenizer(rd.readLine());
text[i][0] = st.nextToken();
text[i][1] = st.nextToken();
text[i][2] = st.nextToken();
text[i][3] = st.nextToken();
}
Arrays.sort(text, new Comparator<String[]>() {
@Override
public int compare(String test1[], String test2[]) {
// 연도가 같은 경우 달을 비교
if(test1[3].equals(test2[3])) {
// 달이 같은 경우
if(test1[2].equals(test2[2])) {
// 날짜 차이 반환
return Integer.parseInt(test1[1]) - Integer.parseInt(test2[1]);
}
return Integer.parseInt(test1[2]) - Integer.parseInt(test2[2]);
}
return Integer.parseInt(test1[3]) - Integer.parseInt(test2[3]);
}
});
System.out.println(text[n - 1][0] + "\n" + text[0][0]);
}catch(IOException e) {
System.out.println("error");
}
}
}
|
s |
짧은 포스팅 읽어주셔서 감사드립니다.
오타나 문제가 있는 경우 댓글 부탁드리겠습니다.
다음 포스팅 때 뵙겠습니다.
- 참조 -
https://st-lab.tistory.com/243
자바 [JAVA] - Comparable 과 Comparator의 이해
아마 이 글을 찾아 오신 분들 대개는 Comparable과 Comparator의 차이가 무엇인지 모르거나 궁금해서 찾아오셨을 것이다. 사실 알고보면 두 개는 그렇게 어렵지 않으나 아무래도 자바를 학습하면서 객
st-lab.tistory.com
'백준 - Java' 카테고리의 다른 글
[백준 - 1789][Java] 수들의 합 (0) | 2022.06.15 |
---|---|
[백준 - 2163][Java] 초콜릿 자르기 (0) | 2022.06.14 |
[백준 - 1550] [Java] 16진수 (0) | 2022.06.08 |
[백준 - 2292][Java] 벌집 (0) | 2022.06.06 |
[백준 - 10250][Java] ACM 호텔 (0) | 2022.06.04 |