쵼쥬 2021. 10. 22. 21:50


풀이 방법

플로이드 워셜 방법을 이용해서 다른 선수들과 비교가 가능한지 알아보았다.

이길경우 1 로, 질 경우 -1 로 해서 [1,2]이고 [2,3] 이면 [1,3]이 가능하도록 했다.

 

내 코드

class Solution {
    public int solution(int n, int[][] results) {
        int answer = n;
        
        int[][] array = new int[n + 1][n + 1];
        
        for(int i = 0; i < results.length; i++){
            array[results[i][0]][results[i][1]] = 1;
            array[results[i][1]][results[i][0]] = -1;
        }
        
        for(int k = 1; k <= n; k++){
            for(int i = 1; i <= n; i++){
                for(int j = 1; j <= n ;j++){
                    if(i == j){
                        array[i][j] = 2;
                    }
                    if(array[i][k] == 1 && array[k][j] == 1){
                        array[i][j] = 1;
                    }
                    if(array[i][k] == -1 && array[k][j] == -1){
                        array[i][j] = -1;
                    }
                }
            }
        }
        
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= n ;j++){
                if(array[i][j] == 0){
                    answer--;
                    break;
                }
            }
        }
        
        
        return answer;
    }
}