안녕하세요. 코딩독학 정호빈입니다.
이번에는 정렬 알고리즘에 대해 알아보겠습니다.
정렬은 우리가 흔히 알고 있듯이 어떠한 물체를 나란히 규칙성있게 배열하는 것을 뜻합니다.
이러한 정렬이 코딩에도 존재합니다.
코딩테스트에서 중요하게 여기는 것들을 뽑아보자면
빠른 수행과 문제에 맞는 출력값 입니다.
빠른 수행을 얻기 위해선 어떠한 코드들을 짜야 할까요?
바로 짧은 코드와 그 코드들의 시간복잡도가 낮아야 좋은 수행능력을 가질 것 입니다.
그러면 자바에서 제공해주는 좋은 수행능력을 가진 정렬 라이브러리를 사용해보겠습니다.
1. student 클래스
import java.util.*;
class student implements Comparable<student> {
String name;
int score;
student(String name, int score){
this.name = name;
this.score = score;
}
@Override
public int compareTo(student o) {
if(score<o.score)
return -1;
else if(score>o.score)
return 1;
else
return 0;
}
}
해당 클래스에선 학생의 이름과 점수를 변수로 갖고 있습니다. Comparable을 implements하여서 해당 클래스 내에 comparaTo메소드를 구현하였습니다.
2. Arrays
public class newcode {
public static void main(String[] args) {
student[] abb = new student[2];
abb[0] =new student("홍길동", 99);
abb[1] =new student("동길홍", 96);
System.out.println(abb[0].name+" "+abb[1].name);
Arrays.sort(abb);
System.out.println(abb[0].name+" "+abb[1].name);
}
}
출력결과 : 홍길동 동길홍
동길홍 홍길동
comparaTo메소드에서 구현 해놓은대로 정렬이 이루어진 것을 알 수 있습니다.
3. Collections
public class newcode {
public static void main(String[] args) {
ArrayList<student> abc = new ArrayList<>();
abc.add(new student("홍길동",99));
abc.add(new student("동길홍",97));
System.out.println(abc.get(0).name +" "+abc.get(1).name);
Collections.sort(abc);
System.out.println(abc.get(0).name+" "+abc.get(1).name);
}
}
출력결과 : 홍길동 동길홍
동길홍 홍길동
Arrays는 배열을 정렬 해주는 클래스라고 하면, Collection은 만들어진 List,Map,Set와 같이 객체타입들을 정렬할 수 있도록 해주는 클래스라고 생각하시면 편할것 같습니다.
'코딩테스트' 카테고리의 다른 글
[코딩테스트]이진탐색(떡볶이 떡 만들기) (0) | 2022.01.18 |
---|---|
[코딩테스트]이진탐색 (0) | 2022.01.12 |
[코딩테스트]BFS(미로찾기) (0) | 2022.01.05 |
[코딩테스트]DFS(음료수 얼려 먹기) (0) | 2022.01.04 |
[코딩테스트]BFS (0) | 2022.01.01 |