알고리즘/정렬
[JAVA] 이.코.테 ( 정렬 ) - 성적이 낮은 순서로 학생 출력하기
목차
728x90
반응형
![[JAVA] 이.코.테 ( 정렬 ) - 성적이 낮은 순서로 학생 출력하기 [JAVA] 이.코.테 ( 정렬 ) - 성적이 낮은 순서로 학생 출력하기](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
성적이 낮은 순서로 학생 출력하기
문제
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
반응형
'알고리즘 > 정렬' 카테고리의 다른 글
[JAVA] 이.코.테 ( 정렬 ) - 두 배열의 원소 교체 (0) | 2021.08.10 |
---|---|
[JAVA] 이.코.테 ( 정렬 ) - 위에서 아래로 (0) | 2021.08.10 |
[JAVA] 정렬(Sort) - 퀵정렬(Quick Sort), 계수 정렬(Count Sort) (2) | 2021.08.05 |
[JAVA] 프로그래머스 (정렬) - K번째 수 (0) | 2021.07.29 |
[JAVA] 정렬(Sort) - 버블 정렬, 선택정렬, 삽입정렬 (0) | 2021.07.28 |
댓글