안녕하세요??
DICTIONARY 문제를 푸는 와중에, 계속해서 Runtime error가 나서 질문 드리게 되었습니다.
사용 언어는 Python3이고,
Graph는 인접 행렬로 표현하였습니다.
... 도저히 무엇이 문제를 만들고 있는지 모르겠습니다ㅠ.ㅠ
도와주세요!! ㅠ.ㅠ 감사합니다!!
(혹시, 특히 입력 부분에서 개선점이 있다면 알려주세요ㅠㅠ)
defdfs(graph,visited,here,visited_vs):visited[here]=Trueneighbors=[iforiinrange(26)ifgraph[here][i]==1]forneighborinneighbors:ifvisited[neighbor]==False:visited,visited_vs=dfs(graph,visited,neighbor,visited_vs)visited_vs.append(here)returnvisited,visited_vsdefdfsAll(graph):visited=[Falseforiinrange(26)]# 어차피 알파벳temp=[]forvinrange(26):ifvisited[v]==False:visited_vs=[]visited,visited_vs=dfs(graph,visited,v,visited_vs)# visited_vs.reverse() # reverse를 해야 topological sorting이 가능? temp+=visited_vstemp.reverse()# 먼저 순서로 만들어 주기 위해 다시 뒤집기?answer=''fortintemp:answer+=chr(t+97)returnanswerdefgetAnswer(words):graph=[[0foriinrange(26)]foriinrange(26)]# 그래프의 인접행렬표현# 'a':0, 'b':1 ... 하려면... ord(character)-ord('a')# Make graphforwinrange(len(words)-1):word1=words[w]word2=words[w+1]foriinrange(len(word1)):# 앞 단어가 끝날때까지만 보면 됨c1=word1[i]c2=word2[i]ifc1!=c2:graph[ord(c1)-ord('a')][ord(c2)-ord('a')]=1break# Check cycleforiinrange(26):forjinrange(i,26):ifgraph[i][j]+graph[j][i]==2:return"INVALID HYPOTHESIS"# Make topological sortinganswer=dfsAll(graph)returnanswerif__name__=="__main__":n=int(input())answers=[]foriinrange(n):nbwords=int(input())words=[]forjinrange(nbwords):words.append(input())answer=getAnswer(words)answers.append(answer)foranswerinanswers:print(answer)
KkanTo
안녕하세요??
DICTIONARY 문제를 푸는 와중에, 계속해서 Runtime error가 나서 질문 드리게 되었습니다.
사용 언어는 Python3이고,
Graph는 인접 행렬로 표현하였습니다.
... 도저히 무엇이 문제를 만들고 있는지 모르겠습니다ㅠ.ㅠ
도와주세요!! ㅠ.ㅠ 감사합니다!!
(혹시, 특히 입력 부분에서 개선점이 있다면 알려주세요ㅠㅠ)
6년 전