-
[백준] 10814번 : 나이순 정렬알고리즘/백준 2022. 8. 25. 00:01
https://www.acmicpc.net/problem/10814
문제 해석
정렬을 잘할 수 있는지 묻는 문제입니다.
나이순으로 그리고 나이가 같다면 가입한 순으로 정렬합니다.
문제 풀이 전 설계
람다와 스트림을 통해 해결해보려고 합니다.
Member 클래스를 두고 나이, 가입한 순으로 Comparator를 구현합니다.
출력은 stream의 forEach로 값을 쌓아두고 출력합니다.
코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class Main { static class Member { int age; int order; String name; public Member(int age, int order, String name) { this.age = age; this.order = order; this.name = name; } } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); List<Member> members = new ArrayList<>(); for (int i = 0; i < N; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); int age = Integer.parseInt(st.nextToken()); String name = st.nextToken(); members.add(new Member(age, i, name)); } members.sort((m1, m2) -> m1.age == m2.age ? m1.order - m2.order : m1.age - m2.age); StringBuilder sb = new StringBuilder(); members.stream() .forEach(m1 -> sb.append(m1.age + " " + m1.name + "\n")); System.out.println(sb.toString()); } }
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2630번 : 색종이만들기 - 자바(JAVA) (0) 2022.08.30 [백준] 1620번 : 나는야 포켓몬 마스터 이다솜 - 자바(JAVA) (0) 2022.08.28 [백준] 2164번 : 카드2 - 자바(JAVA) (0) 2022.08.24 [백준] 16953번 : A -> B - 자바(JAVA) (0) 2022.08.22 [백준] 1181번 : 단어 정렬 - 자바(JAVA) (0) 2022.08.21