[C++] 프로그래머스 - 순위

🔐 프로그래머스 - 순위

https://school.programmers.co.kr/learn/courses/30/lessons/49191


🔑 풀이

n명의 선수들의 경기 결과가 주어졌을 때, 순위를 확실히 정할 수 있는 선수의 수를 반환하도록

하는 문제이다. 순위를 확실히 정할 수 있으려면 n명의 선수가 있다고 가정할 때, 어떤 선수 A는

n-1 개의 경기 결과가 존재해야만 한다.

하지만, 단순히 주어지는 경기 결과만으로는 선수들간의 모든 승패 관계를 파악하기 어렵다.

문제의 예시처럼, 5명의 선수 중 2번 선수가 (1, 3, 4)번 선수에게 패하고, 5번 선수에게 승리했다는

정보로 5번 선수가 (1, 3, 4) 번에게도 패배한다는 것을 도출해야만 한다.

즉, 선수 i선수 k에게 이겼고, 선수 k선수 j에게 이겼다면, 선수 i 역시 선수 j에게

이긴 것이 된다. if (win[i][k] && win[k][j]) win[i][j] = true;

이렇게 모든 선수들에 대한 승패를 저장하는 테이블을 채우고, 한 선수에게 n-1개의

승패 데이터가 존재한다면, 순위를 매길 수 있는 것이다.


🧩 코드

Leave a comment