일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- WebOS
- 휴학
- androidstudio
- level4
- Github
- 대학원
- SQL
- 프로그래머스
- 대학원일기
- BFS
- level1
- Python
- build
- git
- Matrix Factorization
- level3
- D3
- 내휴학생활중의아주큰일
- java
- 컴퓨터비전
- SWEA
- 컨트리뷰톤
- 자바
- 안드로이드스튜디오
- MSBuild
- 어렵다
- 파이썬
- 다시풀기
- LEVEL2
- py
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