[백준] 10814번: 나이순 정렬 (Java)

seri·2024년 6월 25일
0

코딩테스트 챌린지

목록 보기
2/62

문제: https://www.acmicpc.net/problem/10814

📌 문제 탐색하기

입력 : 첫째 줄 - 회원 수 (1 ≤ 회원 수 ≤ 100,000)
둘째 줄 - 나이 (공백) 이름[a-zA-Z] (1 ≤ 나이 ≤ 200, 이름 ≤ 100, 가입 순 오름차순)
출력 : 나이 오름차순으로 회원의 이름 출력. 단, 나이가 같으면 먼저 가입한 사람이 먼저 출력

가능한 시간복잡도

O(NlogN)

알고리즘 선택

팀정렬 알고리즘

📌 코드 설계하기

  1. 첫째 줄에 회원 수를 Input으로 받는다.
  2. 둘째 줄에 '나이 (공백) 이름'을 가입 순 오름차순으로 Input으로 받는다.
  3. Arrays.sort, Comparator를 사용해 나이 오름차순으로 정렬한 후 '회원의 나이 (공백) 이름'을 출력한다

📌 시도 회차 수정 사항 (Optional)

💡 시도별 수정 사항은 어떻게 작성하나요?
- 무문별하게 “맞았습니다”가 나올때 까지 수정하는 형태의 문제 풀이를 반복하면 , 내가 어떤 실수를 해서 해당 문제를 틀렸는지 모르게 됩니다.
- 틀렸습니다를 받았다면 왜 틀렸는지 고민해보고 , 어떻게 수정할 수 있는지 고민하는 과정을 작성해주시면 됩니다.
- 위에 내가 세울 설계에서 어떤 부분이 틀렸는지도 함께 점검해보세요
- 한번에 맞출수도 있기 때문에 이 칸은 Optional입니다.

1회차

성공

2회차

📌 정답 코드

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int N = sc.nextInt();
        String[][] person = new String[N][2];
        
        for (int i = 0; i < N; i++) {
            person[i][0] = String.valueOf(sc.nextInt()); // 나이
            person[i][1] = sc.next(); // 이름
        }
        
        Arrays.sort(person, new Comparator<String[]>() {
            public int compare(String[] a, String[] b) {
                return Integer.parseInt(a[0]) - Integer.parseInt(b[0]); // 나이를 정수로 변환하여 비교
            }
        });
        
        for (int i = 0; i < N; i++) {
            System.out.println(person[i][0] + " " + person[i][1]);
        }
        
        sc.close();
    }
}
profile
꾸준히 정진하며 나아가기

0개의 댓글