[Programmers] 순위

Date:

[Programmers] 순위

Problem URL : 순위

#include <string>
#include <vector>

using namespace std;

bool ch[101][101];

int solution(int n, vector<vector<int>> results) {
    int answer = 0;
    for(auto x : results) {
        ch[x[0]][x[1]] = true;
    }
    for(int k = 1; k <= n; k++){
        for(int i = 1; i <= n; i++){
            for(int j =1 ; j <= n; j++){
                if(ch[i][k] && ch[k][j]) { // i가 k를 이기고, k가 j를 이겼으면
                    ch[i][j] = true; // i가 j를 이긴다.
                }
            }
        }
    }
    for(int i = 1; i <= n; i++){
        int cnt = 0;
        for(int j = 1; j <= n; j++){
            if(ch[i][j] || ch[j][i]) {
                cnt++; //순위 비교가능
            }
        }
        if(cnt == n-1) {
            answer++; // n-1명과 순위를 비교 가능하면 순위를 매길 수 있다.
        }
    }
    return answer;
}

댓글