Algorithm/백준

[백준 알고리즘] 26265번: 멘토와 멘티 (JAVA)

에릭 Kim 2024. 1. 25. 20:48
반응형

https://www.acmicpc.net/problem/26265

 

26265번: 멘토와 멘티

서울사이버대학교에는 멘토링 프로그램이 있다. 멘토링 프로그램은 한 명의 멘토(선배학습자)가 여러 명의 멘티(후배학습자)에게 대학 생활에 대한 노하우와 정보 등을 전수하는 것이다. 빅데

www.acmicpc.net

 

소스코드

import java.util.*;
import java.io.*;

class P26265 {
    public static void main(String[] args) throws Exception{

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int n = Integer.parseInt(br.readLine());

        String[][] arr = new String[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();
        }
        
        // 이차원 문자열 배열 정렬을 위해서는 람다식을 활용하여 compare를 재정의 해야함
        Arrays.sort(arr,new Comparator<String[]>() {
            @Override
            public int compare(String[] o1, String[] o2) {
                if (o1[0].equals(o2[0])) return o2[1].compareTo(o1[1]);
                else  return o1[0].compareTo(o2[0]);
            }   
        });
        for (String[] m: arr) {
            sb.append(m[0]+" "+m[1]).append("\n");
        }    
        System.out.println(sb);
    }
}

 

풀이

★ 요즘 계속 정렬문제를 풀고 있는데 자바의 정렬이 다른 언어에 비해서 꽤 까다로운 거 같습니다 ㅠㅠ

 

★ 2차원 문자열 배열을 정렬하기 위해선 compare 함수를 재정의 해줘야 합니다 ! 재정의 해줄 때 인자 값으로 배열을 받아주고, 해당 문제의 경우에는 멘토가 같을 경우, 멘티를 사전 순 내림차순으로 정렬해줬습니다. 

 

 

반응형