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