ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 순위
    코딩 테스트/Level 3 2020. 9. 30. 18:28
    반응형

    순위
    그래프
    986명 완료

    플로이드 와샬 알고리듬을 이용하면 되지만.. 
    족보 없는 방법(야매)으로도 풀 수 있다.. 

    n번 선수,
    n번 선수에게 이긴 선수들,
    n번 선수에게 진 선수들,
    이 셋의
    합이 n이 되면 ~!
    n번은 순서를 알 수 있는 선수. 

    그림을 그려보면 직관적이다. 

    다만 어떻게 빠짐없이
    이긴 선수와 진 선수를 정리할 수 있을지가 관건..
    .....

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

     

    코딩테스트 연습 - 순위

    5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2

    programmers.co.kr

    def solution(n, results):
        winner_loser, loser_winner = {i + 1: set() for i in range(n)}, {i + 1: set() for i in range(n)}
        for winner, loser in results:
            winner_loser[winner].add(loser)
            loser_winner[loser].add(winner)
        for i in range(1, n + 1):
            for winner in winner_loser[i]:
                for loser in loser_winner[i]:
                    winner_loser[loser].add(winner)
            for loser in loser_winner[i]:
                for winner in winner_loser[i]:
                    loser_winner[winner].add(loser)
        return sum([1 for i in range(1, n + 1) if len(winner_loser[i]) + len(loser_winner[i]) == n - 1])
    반응형
Designed by Tistory.