본문 바로가기

알고리즘/백준

[백준] 10814 - 나이순 정렬 (JAVA/ 자바)

반응형

10814번 문제

 

String[][] 배열을 이용한 후, Comparator 익명 클래스를 이용해서 정렬하는 방법

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main{
public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    String[][] mem = new String[N][2];

    for(int i=0; i<N; i++){
        mem[i][0] = sc.next();
        mem[i][1] = sc.next();
    }

    Arrays.sort(mem, new Comparator<String[]>() {
        @Override
        public int compare(String[]age1, String[]age2){
            return Integer.parseInt(age1[0]) - Integer.parseInt(age2[0]);
        }
    });

    for(int i=0; i<N; i++){
        System.out.print(mem[i][0] + " ");
        System.out.println(mem[i][1]);
    }
    sc.close();
}
}

 

구조체를 이용하면 서로 다른 자료형을 같이 쓸 수 있다고 해서 도전해보았으나 아직까지는 문제 해결이 안된 상태다ㅠ

 

❗️❗️ 틀린 코드

구조체 이용하는 방법 시도

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

class Member{
    int age;
    String name;
}

public class Main{
public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    Member mem;
    mem = new Member();
    
    for(int i=0; i<N; i++){
        mem.age = sc.nextInt();
        mem.name = sc.next();
    }
    
    Arrays.sort(mem, new Comparator<Member>() {
        @Override
        public int compare(Member age1, Member age2){
            return age1.age - age2.age;
        }
    });

    System.out.print(mem.age + " ");
    System.out.println(mem.name);
    sc.close();
}
}

sort 부분에서 오류가 나는데 이걸 어떻게 해결해줘야할지 아직 모르겠다...

반응형