ALGORITHM/PROGRAMMERS

[프로그래머스] 위클리 챌린지 6주차

0298 2021. 9. 6. 17:10

https://programmers.co.kr/learn/courses/30/lessons/85002

 

코딩테스트 연습 - 6주차

복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요

programmers.co.kr

2021-09-06


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
32
33
34
35
36
37
38
39
40
41
import java.util.*;
class Solution {
    public int[] solution(int[] weights, String[] head2head) {
        int[] answer = new int[weights.length];
        double[][] arr = new double[weights.length][4];
 
         for(int i = 0; i < head2head.length; i++) {
            int cnt = 0;
            int wgt = 0;
            int tot = 0;
            for(int j = 0; j < head2head[i].length(); j++) {
                if(i == j || head2head[i].charAt(j) == 'N'continue;
                if(head2head[i].charAt(j) == 'W') {
                    cnt++;
                    if(weights[i] < weights[j]) wgt++;
                }
                tot++;
            }
            arr[i][0= i; // 번호
            arr[i][1= weights[i]; // 무게
            arr[i][2= (tot == 0) ? 0 : cnt/(double)tot; // 승률
            arr[i][3= wgt; // 무거운 복서를 이긴 횟수
        }
        Arrays.sort(arr, new Comparator<double[]>() {
            @Override
            public int compare(double[] o1, double[] o2) {
                if(o1[2== o2[2]) {
                    if(o1[3== o2[3]) {
                        if(o1[1== o2[1]) {
                            return Double.compare(o1[0], o2[0]);
                        } return Double.compare(o2[1], o1[1]);
                    } return Double.compare(o2[3], o1[3]);
                }
                return Double.compare(o2[2] , o1[2]);
            }
        });
 
        for(int i = 0; i < arr.length; i++) answer[i] = (int) arr[i][0]+1;
        return answer;
    }
}
cs

#문제풀이

arr[weights.length][4] 배열을 만들고,

각 index의 [0]은 번호, [1]은 무게, [2]는 승률, [3]은 자신보다 무거운 복서를 이긴 횟수를 넣어서 정렬했다.

 

맨 처음에 제출했을 때 몇 개 틀렸는데, 승률 계산을 잘못해서였다.. N은 포함하면 안된다;;