티스토리 뷰
JAVA 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class _10825 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stk;
int N = Integer.parseInt(br.readLine());
String[][] arr = new String[N][4];
for (int i = 0; i < N; i++) {
stk = new StringTokenizer(br.readLine());
arr[i][0] = (stk.nextToken());
arr[i][1] = (stk.nextToken());
arr[i][2] = (stk.nextToken());
arr[i][3] = (stk.nextToken());
}
Arrays.sort(arr, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
int kor1 = Integer.valueOf(o1[1]);
int kor2 = Integer.valueOf(o2[1]);
int eng1 = Integer.valueOf(o1[2]);
int eng2 = Integer.valueOf(o2[2]);
int math1 = Integer.valueOf(o1[3]);
int math2 = Integer.valueOf(o2[3]);
if (kor1 == kor2) {
if (eng1 == eng2) {
if (math1 == math2) {
return o1[0].compareTo(o2[0]);
}
return Integer.compare(math2, math1);
}
return Integer.compare(eng1, eng2);
}
// base
return Integer.compare(kor2, kor1);
}
});
for (int i = 0; i < N; i++) {
System.out.println(arr[i][0]/* + " " + arr[i][1]*/);
}
}
}
주로 사용하는 언어인 자바를 사용하여 문제를 풀어보았으나, 너무너무너무너무 복잡해진다.
이 문제를 통해 Arrays.sort()를 Comparator과 함께 사용할 수 있다는 것을 배웠고,
Integer.compare(a, b)에서 a와 b를 바꿔주면 역순으로 정렬이 됨을 알 수 있었다.
또한, Overide한 compare 메소드의 String배열 o1, o2는 각각 한 줄의 데이터(이름, 국, 영, 수)를 의미함을 알게되었다.
다만, 앞으로 알고리즘은 C++로 풀어야겠다고 다짐하게된 문제이기도 하다.
속도도 너무 느리고, 코드가 조잡해보인다. 물론 내가 하수인것도 한몫 했다.
C++ 풀이
는 나중에..
'알고리즘' 카테고리의 다른 글
플로이드 실수 (0) | 2020.05.13 |
---|---|
strlen()의 시간복잡도에 관하여.. (0) | 2019.09.30 |
[Java] Arrays.sort vs Collections.sort (0) | 2019.08.28 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- length
- 용량
- 자바
- 길이
- 시간복잡도
- 개발
- leetcode
- BOJ
- 10825
- Arrays
- Collections.sort
- 정렬
- tim sort
- 실수
- 국영수
- java
- str.length()
- quicksort
- MergeSort
- 알고리즘
- sort
- C++
- String
- 코딩
- strlen
- Arrays.sort
- 문자열
- Comparator
- 플로이드
- collections
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함