Notice
Recent Posts
Recent Comments
Link
DevKim
[python] 프로그래머스 LV.03 - 순위 본문
728x90
programmers.co.kr/learn/courses/30/lessons/49191
코딩테스트 연습 - 순위
5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2
programmers.co.kr
[ 알고리즘 ]
단순구현
[문제 접근]
이 문제의 관건은 나 자신을 제외한 모든 사람과의 이기고,짐의 결과를 알고 있어야된다는 것이다.
이김 =1, 짐 =-1, 알 수 없음 =0으로 나타낸 리스트를 생성시켜주고
한 명의 정보에 대해서,
만약 a가 b,c,d 에게 지고 , e에겐 이겼다면,
1 ) e는 b,c,d에게 무조건 질 것이고,
2 ) b,c,d는 무조건 e를 이길 것이라는걸 알 수 있다.
이렇게 한명씩 모두 정보를 업데이트 시켜준 후,
각 행에서 0이 하나만 포함된 행을 count해주면 된다 ( 자기자신과의 결과는 모름으로)
[코드]
from collections import Counter
def solution(n, results):
answer = 0
graph=[[0]*n for _ in range(n)]
for result in results:
w= result[0]-1 # 이김
l=result[1]-1 # 짐
graph[w][l]=1 # 이김
graph[l][w]=-1 # 짐
for i in range(n):
ptr=graph[i]
win=[]
lose=[]
for j in range(n):
if ptr[j]==1: # i한테 진 애들
lose.append(j)
elif ptr[j]==-1: #i를 이긴 애들
win.append(j)
if len(lose)!=0 and len(win)!=0:
for L in lose:
for W in win:
graph[L][W]=-1
for W in win:
for L in lose:
graph[W][L]=1
for List in graph:
counter=Counter(List)
if counter[0]==1:
answer+=1
return answer
728x90
'알고리즘 PS' 카테고리의 다른 글
[Python] 백준 #2493 탑 (0) | 2021.06.12 |
---|---|
[python] 백준 #1158 요세푸스 문제 재풀이 (0) | 2021.06.12 |
[Python] 삼성 sw 역량 테스트 기출 - 미세먼지 안녕! (0) | 2021.03.20 |
[Python] 삼성 sw 역량 테스트 기출 - 로봇 청소기 (0) | 2021.03.18 |
[Python] 삼성 sw 역량 테스트 기출 - 연구소 (0) | 2021.03.18 |
Comments