[백준] 10814번-나이순 정렬-Java
in Algorithm on Algorithm
백준 10814 나이순 정렬
🖊️풀이법
이번 문제도.. 매우 쉽다.
간단하게 나이를 비교기준으로 지정하고, 정렬을 시켜주면 된다.
여기서 나이는 1~200 사이로 카운트소팅으로 하면 좀더 효율적이겠지만, 람다식을 한번 적용해보고 싶어 내장 함수를 이용하였다.
정답 코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine()); //총 회원 수 N에 할당
String[][] arr = new String[N][2]; // 나이와 이름을 담을 N개의 2차원 배열 생성
for(int i = 0; i< N; i++){ //반복문을 통해 나이와 이름 할당
StringTokenizer st = new StringTokenizer(br.readLine());
arr[i][0] = st.nextToken();
arr[i][1] = st.nextToken();
}
Arrays.sort(arr,(o1,o2) -> Integer.parseInt(o1[0]) - Integer.parseInt(o2[0]));
//나이를 기준으로 정렬 람다식 사용
for(int i = 0; i< N; i++){
sb.append(arr[i][0]).append(" ").append(arr[i][1]).append('\n');
}
System.out.println(sb); //정답 출력
}
}
람다식 표현
람다식 표현은 함수형 프로그래밍으로, Java SE 8버전 부터 사용할 수 있는 문법이며, 간단하게 요약하자면 기존의 메소드들을 좀더 간결하게 표현한 것이라고 볼 수 있다.
//람다식 미사용
Arrays.sort(arr, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return o1[0].compareTo(o2[0]);
}
});
//람다식 사용
Arrays.sort(arr,(o1,o2) -> Integer.parseInt(o1[0]) - Integer.parseInt(o2[0]));
위의 코드 처럼 람다식을 사용할 경우에는 코드가 간결해지는 장점이 있다.
다만, 무분별한 람다식 적용은.. 오히려 코드의 가독성을 떨어트릴 수 있으니 주의해서 사용하자!
끝으로
평소에 잘 사용하지 않는 람다식을 쓰려니, 낯설었고.. 람다식에 조금더 익숙해 지기 위해 반복적으로 연습하자.