알고리즘/정렬
[JAVA] 이.코.테 ( 정렬 ) - 성적이 낮은 순서로 학생 출력하기
hongeeii
2021. 8. 10. 08:00
728x90
반응형
성적이 낮은 순서로 학생 출력하기
문제
N명의 학생의 성적 정보가 주어진다. 형식은 이름 성적 으로 주어지는데 이때 이들의 성적이 낮은 순으로 학생 이름을 출력하는 문제다.
입력
- 첫 번째 줄에 학생의 수 N이 입력된다. (1 <= N <= 100,000)
- 두 번째 줄 부터 N+1 번째 줄 까지 학생의 이름 그리고 성적이 공백으로 주어진다. 학생이름 길이는 100이하, 성적은 100이하 자연수로 주어진다.
출력
- 모든 학생의 이름을 성적이 낮은 순으로 출력하면된다. 동일한 성적은 자유롭게 출력하면된다.
입력 예시
2
홍길동 96
이순신 78
출력 예시
이순신 홍길동
나의 풀이
import java.util.Scanner;
public class PrintStudentToLowGrade {
public static void sort(String[] name, int[] score) {
for (int i = 0; i < score.length; i++) {
int min = i;
for (int j = i; j < score.length; j++) {
if (score[j] < score[min]) {
int temp = score[j];
score[j] = score[min];
score[min] = temp;
String temp2 = name[j];
name[j] = name[min];
name[min] = temp2;
}
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("학생 수 : ");
int n = sc.nextInt();
String[] name = new String[n];
int[] score = new int[n];
sc.nextLine();
for (int i = 0; i < score.length; i++) {
String text = sc.nextLine();
name[i] = text.split(" ")[0];
score[i] = Integer.parseInt(text.split(" ")[1]);
}
sort(name, score);
for (int i = 0; i < score.length; i++) {
System.out.print(name[i] + " ");
}
}
}
String타입의 name배열과 int타입의 score배열 두개를 만들고 각각 같은인덱스에 값을 넣었습니다.
score배열로 선택정렬을 하여 값이 바뀔때의 인덱스를 구하여 name배열도 정렬을 시켰습니다.
풀이시간 : 20분
728x90
반응형