본문 바로가기

728x90
반응형

# Coding

(78)
[백준 / 2606] 바이러스 - Python 너비 우선 탐색(BFS)을 이용하여 풀었으므로, 해당 알고리즘을 선행하면 좋다. 2021.03.19 - [# Coding/# Algorithm] - [보기 쉬운 Algorithm] 너비 우선 탐색(BFS) - Python [보기 쉬운 Algorithm] 너비 우선 탐색(BFS) - Python 너비 우선 탐색(Breadth First Search)은 연결된 노드를 연속적으로 쫓아서 찾는 것이 아닌 연결된 노드들을 모두 탐색한 후 그다음 연결 노드를 탐색한다. 예를 들어 위와 같은 경우 'A'에서 탐색을 시 joinmycode.tistory.com 입력을 받아 양방향 그래프를 작성하고, 너비 우선 탐색으로 1번 노드부터 탐색한다. N = int(input()) M = int(input()) 총노드의 개수인..
[보기 쉬운 Algorithm] 다익스트라(Dijkstra) 알고리즘 - Python '다익스트라(Dijkstra) 알고리즘'은 비용(가중치) 간선이 있는 노드 그래프의 최단 거리를 구하는 알고리즘 시간을 줄이기 위해서 파이썬 모듈 중 최소 힙을 구현할 수 있는 heapq를 사용한다. ↳ list로도 구현 가능하나 시간이 느려진다. import heapq def dijkstra(graph, start): distances = {node: float('inf') for node in graph} distances[start] = 0 queue = [] heapq.heappush(queue, [distances[start], start]) graph와 시작 점인 start를 인자로 받는다. distances는 계산된 각 점마다의 거리를 담고있다. 다익스트라 알고리즘은 거리가 짦은 값을 갱신하..
[백준 / 2178] 미로 탐색 - Python '다익스트라(Dijkstra) 알고리즘'을 이욯하여 풀었으므로, 해당 알고리즘에 대한 선행이 필요하다. 2021.03.18 - [# Coding/# Algorithm] - [보기 쉬운 Algorithm] 다익스트라(Dijkstra) 알고리즘 - Python [보기 쉬운 Algorithm] 다익스트라(Dijkstra) 알고리즘 - Python '다익스트라(Dijkstra) 알고리즘'은 비용(가중치) 간선이 있는 노드 그래프의 최단 거리를 구하는 알고리즘 시간을 줄이기 위해서 파이썬 모듈 중 최소 힙을 구현할 수 있는 heapq를 사용한다. ↳ list joinmycode.tistory.com import sys import heapq def dijkstra(graph, N, M): distances = [..
[백준 / 1753] 최단경로 - Python 시간 초과와 여러개의 간선에서 문제가 있었다. 최단 경로는 '다익스트라(Dijkstra) 알고리즘'을 먼저 공부해야 한다. ↳ 출발 지점으로부터 비용(가중치)이 가장 낮은 경로를 계산 2021.03.18 - [# Coding/# Algorithm] - [보기 쉬운 Algorithm] 다익스트라(Dijkstra) 알고리즘 - Python [보기 쉬운 Algorithm] 다익스트라(Dijkstra) 알고리즘 - Python '다익스트라(Dijkstra) 알고리즘'은 비용(가중치) 간선이 있는 노드 그래프의 최단 거리를 구하는 알고리즘 시간을 줄이기 위해서 파이썬 모듈 중 최소 힙을 구현할 수 있는 heapq를 사용한다. ↳ list joinmycode.tistory.com import sys import h..
[백준 / 9094] 수학적 호기심 - Python (a, b)는 정수쌍이므로, for문을 통해서 한번씩 돌려주고, 간단히 (a2+b2+m)/(ab)에서 /를 %로 바꾸어 조건에 맞으면 count를 추가해 주면 된다. python3로 제출하니 계속 시간초과가 나와서 pypy3로 제출했다. import sys for _ in range(int(sys.stdin.readline())): n,m=map(int,sys.stdin.readline().split()) count=0 for a in range(1,n-1): for b in range(a+1,n): if (a**2+b**2+m)%(a*b)==0:count+=1 print(count)
[백준 / 1260] DFS와 BFS - Python DFS(Depth First Search) 깊이 우선 탐색 def dfs(graph, start_node): visit = [] stack = [] stack.append(start_node) while stack: node = stack.pop(0) if node not in visit: visit.append(node) stack = graph[node]+stack return visit BFS(Breadth First Search) 너비 우선 탐색 def bfs(graph, start_node): visit = [] queue = [] queue.append(start_node) while queue: node = queue.pop(0) if node not in visit: visit.append..

728x90
반응형