728x90
반응형
https://www.acmicpc.net/problem/8979
int[][] arr= new int[n][5]
배열을 만들었다.
arr[] => {국가번호, 금메달, 은메달, 동메달, 등수} 이다.
arr에 정보를 입력받은 후,
금메달>은메달>동메달 순으로 정렬한다.
(Arrays.sort , comparator 이용)
이후, 등수를 책정하는데
점수가 같은 국가는 공동순위를 받아야 하므로
이전 국가와 비교해서 금은동 개수가 같으면 이전국가와 같은 등수를 받고, 카운트를 증가시킨다
이전 국가와 비교해서 금은동 개수가 다르면 이전국가의 등수 + 카운트 한 값을 등수로 받고, 카운트를 1로 초기화 한다.
이후 배열에서 k국가의 등수를 출력한다.
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 P8979 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int[][] arr = new int[n][5];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
arr[i][2] = Integer.parseInt(st.nextToken());
arr[i][3] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] o2, int[] o1) {
if (o1[1] == o2[1]) {
if (o1[2] == o2[2]) {
return o1[3] - o2[3];
} else {
return o1[2] - o2[2];
}
}
return o1[1] - o2[1];
}
});
int count = 1;
arr[0][4] = 1;
for (int i = 1; i < n; i++) {
if (arr[i - 1][1] == arr[i][1] && arr[i - 1][2] == arr[i][2] && arr[i - 1][3] == arr[i][3]) {
arr[i][4] = arr[i - 1][4];
count++;
} else {
arr[i][4] = arr[i - 1][4] + count;
count = 1;
}
}
for (int i = 0; i < n; i++) {
if(arr[i][0]==k)
System.out.println(arr[i][4]);
}
}
}
728x90
반응형
'코딩 > 백준-자바' 카테고리의 다른 글
[자바] 백준 1213번: 팰린드롬 만들기 (0) | 2023.01.10 |
---|---|
[자바] 백준 7562번: 나이트의 이동 (0) | 2023.01.09 |
[자바] 백준 1110번: 더하기 사이클 (0) | 2023.01.09 |
[자바] 백준 1068번: 트리 (0) | 2023.01.08 |
[자바] 백준 12851번: 숨바꼭질2 (0) | 2023.01.07 |
댓글