일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Set
- 백준
- 카카오
- KAKAO BLIND RECRUITMENT
- backjoon
- programmers
- 추석맞이 코딩챌린지
- 파이썬
- java
- lambda
- heapq
- divmod
- 다익스트라
- 프로그래머스
- 수학
- 자바
- 정규식
- 동적 계획법
- DateTime
- Zip
- Re
- Combinations
- python
- 위클리 챌린지
- BFS
- 정렬
- 이분탐색
- dfs
- 재귀함수
- 그리디
Archives
- Today
- Total
상상쓰
[프로그래머스] 가장 먼 노드 본문
https://programmers.co.kr/learn/courses/30/lessons/49189
1부터 시작하여 BFS 알고리즘을 이용하여 구현했다.
while 문을 한번 돌 때마다 deque 의 popleft() 함수를 이용하면 1과의 거리가 1씩 늘어나는 번호들의 집합을 얻을 수 있다.
from collections import deque, defaultdict
def solution(n, edge):
answer = 0
dic = defaultdict(list)
D = defaultdict(int)
D[1] = 1
queue = deque([1])
for i, j in edge:
dic[i].append(j)
dic[j].append(i)
while queue:
answer = len(queue)
for i in range(answer):
x = queue.popleft()
for j in dic[x]:
if D[j] == 0:
D[j] = 1
queue.append(j)
return answer
print(solution(6, [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]])) # 3
'Coding Test' 카테고리의 다른 글
[프로그래머스] 전화번호 목록 (0) | 2021.07.19 |
---|---|
[백준] 다리 놓기 (0) | 2021.07.19 |
[프로그래머스] 표 편집 (0) | 2021.07.16 |
[백준] 가운데를 말해요 (0) | 2021.07.15 |
[백준] 컵홀더 (0) | 2021.07.14 |
Comments