본문 바로가기

백준

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

728x90

코드 힌트

  1. 입력 처리:
    • 데이터를 효율적으로 읽기 위해 입력 스트림을 설정합니다. 첫 번째 입력 값은 총 데이터의 수를 나타냅니다.
    • 각 데이터 항목을 두 부분으로 나누어 처리합니다: 첫 번째 부분은 숫자, 두 번째 부분은 문자열입니다.
  2. 정보 저장:
    • 숫자와 문자열 정보를 각각 두 개의 별도 배열에 저장합니다. 숫자는 정렬할 수 있는 배열에, 문자열은 관련된 이름을 저장할 배열에 담습니다.
  3. 정렬:
    • 숫자 배열의 복사본을 만들어 정렬합니다. 이를 통해 숫자들을 오름차순으로 정렬할 수 있습니다.
  4. 출력 준비:
    • 정렬된 숫자 배열을 순회하면서 원본 배열에서 숫자와 관련된 문자열을 찾아 출력합니다. 숫자가 중복되면 처리하지 않기 위해 해당 항목은 무시합니다.
  5. 결과 출력:
    • 준비된 출력 결과를 스트림을 통해 출력합니다. 모든 데이터가 처리된 후에는 스트림을 마무리하여 모든 출력을 완료합니다.

 


정답은 더보기 클릭

더보기
package baekjoon;

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

public class Main {
    public static void main(String[] args) throws NumberFormatException, IOException {
        // BufferedReader와 BufferedWriter를 사용하여 입출력 처리
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 테스트 케이스의 수를 입력 받음
        int n = Integer.parseInt(br.readLine());
        
        // 나이와 이름을 저장할 배열 초기화
        int[] ageArr = new int[n];
        String[] nameArr = new String[n];
        
        // 사용자 정보 입력 받기
        for (int i = 0; i < n; i++) {
            String[] userInfo = br.readLine().split(" ");
            String name = userInfo[1];
            int age = Integer.parseInt(userInfo[0]);
            
            // 나이와 이름을 배열에 저장
            ageArr[i] = age;
            nameArr[i] = name;
        }
        
        // 나이 배열을 복사하여 정렬
        int[] sortedAgeArr = Arrays.copyOf(ageArr, n);
        Arrays.sort(sortedAgeArr);
        
        // 정렬된 나이 배열을 순회하며 결과 출력
        for (int i = 0; i < n; i++) {
            int age = sortedAgeArr[i];
            for (int j = 0; j < n; j++) {
                if (age == ageArr[j]) {
                    // 나이와 이름을 출력 후 해당 나이를 -1로 표시하여 중복 방지
                    ageArr[j] = -1;
                    bw.write(age + " " + nameArr[j] + "\n");
                    break;
                }
            }
        }
        
        // BufferedWriter의 남은 데이터를 출력
        bw.flush();
        bw.close();
    }
}

 

728x90

'백준' 카테고리의 다른 글

[백준] 카드2 (2164번)  (0) 2024.08.26
[백준] 단어 정렬 (1181번)  (0) 2024.08.17
[백준] 터렛 (1002번)  (0) 2024.08.16
[백준] 스택 10828번  (0) 2024.08.15
[백준] 별 찍기 - 3 (2440번)  (0) 2024.08.15