풀이
- 요즘 기본 알고리즘 해결을 위한 언어를 자바로 고정하기 위해
- SWEA로 기초를 닦으며 이런 저런 공부를 하고 있음.
- 아래 코드는 단순하게 테스트 케이스 만큼
- 특정 학생의 성적을 조회하는 문제인데
- 뭔가 자바여서 그런지 코드가 더럽긴하다.
- 아래 코드 내용은 별 다른게 없어 해결 방법에 대한 건 생략하지만
- 내림차순 정렬은 Collections.reverseOrder() 메서드로 할 수 있으며,
- 기본 타입 배열을 Collection에 해당하는 배열에
- 기본 값으로 깊은 복사를 하고자 할 땐 Arrays.asList()를 사용하기.
- 그리고 같은 기본 타입 배열에 깊은 복사를 하고자 할 땐 아래의 코드를 사용하기.
- System.Arrays.copyOf()
- 첫 번째 인자에는 배열
- 두 번째 인자에는 배열의 길이를 넣기
- Clone()
- System.Arrays.copyOf()
import java.io.*;
import java.util.*;
public class _sw_1983 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int tc = Integer.parseInt(br.readLine());
String[] result_li = {"A+","A0","A-","B+","B0","B-","C+","C0","C-","D0"};
for (int t=1; t<=tc; t++) {
int[] NK = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int N = NK[0]; // 학생 수
int K = NK[1]; // 찾을 학생 번호
Float[] li = new Float[N];
for (int i=0; i<N; i++) {
int[] arr = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
li[i] = score(arr);
}
List<Float> sort_li = new ArrayList<>(Arrays.asList(li));
Collections.sort(sort_li, Collections.reverseOrder());
for (int j=0; j<N; j++) {
if (li[K-1].equals(sort_li.get(j))) {
bw.write(String.format("#%d %s",t,result_li[j/(N/10)])+"\n");
break;
}
}
}
bw.flush();
}
public static Float score(int[] arr) {
return (float) (arr[0]*0.35+arr[1]*0.45+arr[2]*0.2);
}
}
'알고리즘' 카테고리의 다른 글
[프로그래머스, 자바, 12911번] 다음 큰 숫자 (0) | 2024.09.04 |
---|---|
[프로그래머스, 자바, 154538번] 숫자 변환하기 (1) | 2024.09.01 |
[백준, 자바, 1072번] 게임 (이분 탐색) (0) | 2024.08.27 |
[백준, 자바, 10988번] 팰린드롬인지 확인하기 (0) | 2024.08.27 |
[백준, 자바, 2512번] 예산(이분 탐색) (0) | 2024.08.24 |