Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 삼성SDS Brigthics
- 삼성 SDS
- Brigthics
- 개인 의료비 예측
- Brigthics를 이용한 분석
- 노코드AI
- 포스코 아카데미
- 모델링
- 추천시스템
- 데이터 분석
- 삼성 SDS Brigthics
- 삼성SDS
- 직원 이직여부
- 팀 분석
- 데이터분석
- 영상제작기
- 혼공머신러닝딥러닝
- 포스코 청년
- 삼성SDS Brightics
- Brigthics Studio
- 혼공머신
- 직원 이직률
- 혼공학습단
- 브라이틱스
- 브라이틱스 서포터즈
- Brightics를 이용한 분석
- Brightics Studio
- 캐글
- 혼공
- Brightics
Archives
- Today
- Total
데이터사이언스 기록기📚
[백준/Python] 1240번(그래프,BFS,DFS)_노드사이의 거리 본문
📌문제 유형
그래프, 트리, BFS, DFS (골드5)
📌문제
📌나의 문제풀이
- BFS
from collections import deque
n,m = map(int,input().split())
maps = [[ ] for _ in range(n+1)]
for _ in range(n-1):
a,b,dist = map(int,input().split())
maps[a].append([b,dist])
maps[b].append([a,dist])
for _ in range(m):
q = deque()
start, end = map(int,input().split())
visited = [0 for _ in range(n+1)]
visited[start] = 1
q.append((start,0))
while q:
s, dis = q.popleft()
if s == end:
print(dis)
break
for v, d in maps[s]:
if visited[v] == 0:
q.append((v,d+dis))
visited[v] = 1
- DFS
n, m = map(int,input().split())
maps = [[] for _ in range(n+1)]
for _ in range(n-1):
a, b, dist = map(int,input().split())
maps[a].append((b, dist))
maps[b].append((a, dist))
def dfs(x, ans):
if x == y_:
print(ans)
return
for y, d in maps[x]:
if visited[y] == 0:
visited[y] = 1
dfs(y,ans + d) # ans += d 보다는 ans값을 직접 전달해 주는 것이 답임
# return
for _ in range(m):
x_, y_ = map(int,input().split())
visited = [0 for _ in range(n+1)]
visited[x_] = 1
dfs(x_,0)
📌 다른사람의 문제풀이
- BFS
from collections import deque
def distance(x, y):
queue = deque()
queue.append((x, 0))
visited = [0 for _ in range(N+1)]
visited[x] = 1
while queue:
v, d = queue.popleft()
if v == y:
return d
for w, dist in graph[v]:
if not visited[w]:
visited[w] = 1
queue.append((w, d+dist))
N, M = map(int, input().split())
graph = [[] for _ in range(N+1)]
for _ in range(N-1):
i, j, dist = map(int, input().split())
graph[i].append((j, dist))
graph[j].append((i, dist))
for _ in range(M):
x, y = map(int, input().split())
print(distance(x, y))
- DFS
import sys
input=sys.stdin.readline
sys.setrecursionlimit(10**9)
def DFS(start,end , check):
global count
if start==end:
count=check
return
for i,j in Tree[start]:
if not visit[i]:
visit[i]=True
DFS(i, end , check+j)
N,M=map(int,input().split())
Tree=[ [] for _ in range(N+1) ]
for i in range(N-1):
a,b,c=map(int,input().split())
Tree[a].append([b,c])
Tree[b].append([a,c])
for i in range(M):
a,b=map(int,input().split())
visit=[False]*(N+1)
count=0
visit[a]=True
DFS(a,b , 0)
print(count)
📌 리뷰
- BFS로 (시작 위치, 합친 거리)만 deque에 넣고 진행
- DFS에서 maps[s]의 i,j 값으로 dfs 함수 다루기
728x90
'Coding Test > 백준(Python)' 카테고리의 다른 글
[백준/Python] 2212번(그리디)_센서 (0) | 2023.05.29 |
---|---|
[백준/Python] 1759번(백트래킹, 브루트포스)_암호 만들기 (0) | 2023.05.23 |
[백준/Python] 1461번(그리디, 정렬)_도서관 (0) | 2023.05.22 |
[백준/Python] 11052번(DP)_카드 구매하기 (0) | 2023.05.16 |
[백준/Python] 15989번(DP)_1,2,3 더하기 4 (0) | 2023.05.16 |
Comments