[프로그래머스] 순위

챠밍·2022년 3월 17일
0

알고리즘 공부

목록 보기
3/3
post-thumbnail

[이 문제의 핵심]

  1. 이긴사람과 진사람을 나눠서 set집합으로 설정한다는 것!
  2. 그리고 1번에게 진 사람은 1번을 이긴사람한테도 반드시 진다!
  3. 1번을 이긴 사람과 진 사람을 합치면 n-1이라는 것!

[풀이 코드]

from collections import defaultdict

def solution(n, results):
    answer = 0

    win = defaultdict(set)   
    lose = defaultdict(set) 

    for a,b in results:
        win[a].add(b) #내가 이긴 선수들 
        lose[b].add(a) #나를 이긴 선수들
    print(win)
    print(lose)

    for i in range(1,n+1):
        for w in lose[i]:
            win[w].update(win[i])
        for l in win[i]:
            lose[l].update(lose[i])

    for i in range(1,n+1):
        if len(win[i])+len(lose[i])==n-1:
            answer+=1

    return answer

📕 문제 확인

출처: 프로그래머스
링크: https://programmers.co.kr/learn/courses/30/lessons/49191

profile
SW developer

0개의 댓글