from collections import deque
def solution(n, vertex):
visited=[0]*(n+1)
queue=deque()
queue.append([1,0])
visited[1]=1
vertexdict={}
anslist=[[1,0]]
maxdist=0
answer=0
for v in vertex:
try:
vertexdict[v[0]].append(v[1])
except:
vertexdict[v[0]]=[v[1]]
try:
vertexdict[v[1]].append(v[0])
except:
vertexdict[v[1]]=[v[0]]
while queue:
cur=queue.popleft()
curvert=cur[0]
curdist=cur[1]
if maxdist==curdist:
answer+=1
else:
maxdist=curdist
answer=1
for ne in vertexdict[curvert]:
if visited[ne]==0:
queue.append([ne,curdist+1])
anslist.append([ne,curdist+1])
visited[ne]=1
return answer
통과하긴 했는데 예외처리도 되어있고, 코드가 뭔가 지저분함. 간결화 ㄱㄱ
from collections import deque
def solution(n, vertex):
visited = [0] * (n+1)
queue = deque()
queue.append((1, 0))
visited[1] = 1
vertexdict = {}
anslist = [(1, 0)]
maxdist = 0
answer = 0
for v in vertex:
vertexdict.setdefault(v[0], []).append(v[1])
vertexdict.setdefault(v[1], []).append(v[0])
while queue:
cur, curdist = queue.popleft()
if maxdist == curdist:
answer += 1
else:
maxdist = curdist
answer = 1
for ne in vertexdict[cur]:
if visited[ne] == 0:
queue.append((ne, curdist+1))
anslist.append((ne, curdist+1))
visited[ne] = 1
return answer
setdefault함수를 사용해서 초기 value값이 있다면 append 아니면 []로 해줌. -> try except 제거
새롭게 알게된 사실인데 파이썬 이중 리스트는 각 행의 원소 갯수가 달라도 되는듯?
[[1,2],[1,2,3]] 이렇게 선언 가능
다음번에 이런 문제 풀때 한번 활용해 보도록 하자