일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 파이썬
- 프로그래머스
- 자바
- git
- level1
- py
- 다시풀기
- SWEA
- 컴퓨터비전
- WebOS
- 어렵다
- 안드로이드스튜디오
- LEVEL2
- D3
- level4
- 휴학
- java
- Github
- Matrix Factorization
- BFS
- 컨트리뷰톤
- Python
- 대학원일기
- build
- MSBuild
- 내휴학생활중의아주큰일
- level3
- 대학원
- SQL
- androidstudio
Archives
- Today
- Total
bit가 눈 앞에서 왔다갔다
Py) 프로그래머스 49189 본문
https://programmers.co.kr/learn/courses/30/lessons/49189
from collections import deque
def solution(n, edge):
answer = 0
graph = [[] for _ in range(n+1)]
visited = [-1]*(n+1) # 방문 확인
# edge에서 a, b를 뽑아내서 그래프 생성
for a, b in edge:
graph[a].append(b)
graph[b].append(a)
# 방문 예정 노드 설정, 방문 처리
deq = deque([1])
visited[1] = 0
# deq에 있는 노드들을 하나씩 반복한다
while deq:
node = deq.popleft() #deq에 있는 node를 방문해볼 예정
for next_node in graph[node]:
if visited[next_node] == -1: # 아직 방문하지 않음
deq.append(next_node) # 다음 방문예정 큐에 넣음
visited[next_node] = visited[node] + 1 # 거리를 설정, 현재node+1
# node
max_d = max(visited)
for i in visited:
if i == max_d:
answer += 1
return answer
*
from collections import deque
그래프 리스트 생성시 graph = [[]]*(n+1)로 하면 주소값이 복사됨, graph[0],...graph[n-1]이 모두 같은 리스트를 가리킴
각자 다른 주소를 가리키게 하려면 for _ in n 이런 식으로 해야함
bfs
반응형
'Algorithm > Prob' 카테고리의 다른 글
Py, Java) 프로그래머스 42576 (0) | 2022.01.04 |
---|---|
Py) 프로그래머스 42895 (0) | 2022.01.03 |
Py) 프로그래머스 42839 (0) | 2021.12.28 |
프로그래머스) 42586 (0) | 2021.09.03 |
프로그래머스) 42748 (0) | 2021.09.02 |
Comments