이번 문제는 순위 문제이다.
n 명의 선수가 주어지고, 선수들간의 1:1 경기 결과가 results로 주어진다. 이때 주어지는 [A,B]는 A선수가 B 선수를 이겼다는 의미이다.
이때 순위를 매길 수 있는 선수의 수를 구하여 return 해야 한다...
입출력 예를 살펴보면 먼저 4 > 3 이 성립한다. 그리고 4 > 2, 3 > 2 이므로 [4,3,2] 순위가 된다. 그리고 1 > 2 가 주어지는데 이때 1번은 4번 또는 3번과 경기가 없기 때문에 순위가 애매해진다. 그리고 2 >5 이기 때문에 정확하게 순위가 결정되는 사람은 [0,0,0,2,5] 가 된다. 따라서 2를 return 하면 된다.
코드에 설명이 많아서 그렇지 단순한 코드이다.
먼저 w, l 리스트는 집합을 요소로 갖는다.
그리고 results 를 돌면서 i번 선수를 이긴 선수들은 w[i], i번 선수에게 진 선수들은 l[i]에 전달한다.
이제 준비가 끝났으면 다시 반복문을 돌면서 w, l 을 정리해야 한다.
먼저 i번 선수에게 진 l[i] 에 담긴 선수들에게는 i 번 선수를 이긴 w[i] 를 추가해 준다.
그리고 마찬가지로 i번 선수를 이긴 w[i[ 선수들에게는 i번 선수에게 진 l[i]를 추가해준다.
이때 집합을 사용하였으므로 중복으로 전달되는 값들은 자동으로 무시가 된다.
그리고 이제 다시 1번부터 n 번 선수까지 반복문을 통해 돌면서 각 w[i], l[i] 합이 n -1 과 같은 경우만 찾으면 된다.
n = 6이라고 가정하면 1명의 선수는 5번을 경기를 가져야만 정확한 순위를 알 수 있다. 따라서 자기 자신을 제외한 n -1 값이 w[i]와 l[i]의 길이 합과 같은경우에만 순위가 결정된다.
'프로그래머스 퀴즈(Python) > level 3' 카테고리의 다른 글
23.03.14 파이썬 코딩 퀴즈#195 기둥과 보 설치 (프로그래머스 스쿨) (0) | 2023.03.14 |
---|---|
23.03.13 파이썬 코딩 퀴즈#194 자물쇠와 열쇠 (프로그래머스 스쿨) (0) | 2023.03.13 |
23.03.09 파이썬 코딩 퀴즈#192 가장 먼 노드(프로그래머스 스쿨) (0) | 2023.03.09 |
23.03.09 파이썬 코딩 퀴즈#191 입국심사(프로그래머스 스쿨) (1) | 2023.03.09 |
23.03.09 파이썬 코딩 퀴즈#190 여행경로(프로그래머스 스쿨) (0) | 2023.03.09 |