[プログラマー]ランキング、[伯俊]10159号:秤
https://programmers.co.kr/learn/courses/30/lessons/49191?language=python3
https://www.acmicpc.net/problem/10159
問題の説明
二つの問題は同じ問題だ.
プログラマの問題は、2つのノードの接続(一方向)です.
ノード順序のノード数の問題が分かる.
ex) [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]]
上記の一方向図が与えられると
2番ノードの前に4,3,1ノードがあり,後に5番ノードがあるため,全5ノードの中で4位となった.
また、5番目のノードは4番目の2番目のノードよりも後ろにあるので、5番目です.
上記の2つのノードを除いて,既知の等数のノードはない.
解法
問題を見て、グラフィック/DFSで解けばいいと思います.
visit配列を2 D配列に設定する(n個の開始ノードにn個の到達ノードがある)
Dfsアクセス[n][m]==True面nからmに到達可能であり、False面に到達できない
n個のノードがアクセス[n]=Trueまたはアクセス[][n]=Trueである場合、n個のノードの数はnである.
自己から到達可能なノードの数+他者から自己到達可能なノードの数=nであるため、そのノードはその順序を知ることができる.
コード#コード#
https://www.acmicpc.net/problem/10159
問題の説明
二つの問題は同じ問題だ.
プログラマの問題は、2つのノードの接続(一方向)です.
ノード順序のノード数の問題が分かる.
ex) [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]]
上記の一方向図が与えられると
2番ノードの前に4,3,1ノードがあり,後に5番ノードがあるため,全5ノードの中で4位となった.
また、5番目のノードは4番目の2番目のノードよりも後ろにあるので、5番目です.
上記の2つのノードを除いて,既知の等数のノードはない.
解法
問題を見て、グラフィック/DFSで解けばいいと思います.
visit配列を2 D配列に設定する(n個の開始ノードにn個の到達ノードがある)
Dfsアクセス[n][m]==True面nからmに到達可能であり、False面に到達できない
n個のノードがアクセス[n]=Trueまたはアクセス[][n]=Trueである場合、n個のノードの数はnである.
自己から到達可能なノードの数+他者から自己到達可能なノードの数=nであるため、そのノードはその順序を知ることができる.
コード#コード#
from collections import defaultdict
def solution(n, results):
graph=defaultdict(list)
answer=defaultdict(lambda:1)
count=0
visit=[[False for i in range(n+1)] for i in range(n+1)]
def DFS(start,cur):
visit[start][start]=True
for i in graph[cur]:
if not visit[start][i]:
answer[i]+=1
answer[start]+=1
visit[start][i]=True
DFS(start,i)
for i,j in results:
graph[i].append(j)
for i in range(1,n+1):
DFS(i,i)
for _,i in answer.items():
if n==i: count+=1
return count
Reference
この問題について([プログラマー]ランキング、[伯俊]10159号:秤), 我々は、より多くの情報をここで見つけました https://velog.io/@ha-mulan/프로그래머스-순위-백준-10159번-저울テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol