Loading...

BFS 최단경로 역추적하는 방법 배우기

1. 문제 24463번: 미로 (acmicpc.net) 24463번: 미로 첫 번째 줄에는 미로의 크기 $N, M$이 주어진다. $(3 \le N, M \le 2,001$, $N, M$은 홀수$)$ 두 번째 줄부터는 미로의 정보가 주어진다. 두 번째 줄부터 $N$줄에 거쳐 각 줄에는 길이가 $M$이고 .과 +만으로 이 www.acmicpc.net 입구에서 출구로 가는데, 최단 경로가 아닌 경로는 모두 @로 바꿔서 표시하는 문제 2. DFS 풀이 최단 경로가 아닌 경로를 찾는게 그냥 찾을려하면 생각보다 까다롭다 아이디어의 핵심은 이동할 수 있는 모든 위치 .을 먼저 @로 바꿔놓는다 n,m = map(int,stdin.readline().split()) maze = [list(stdin.readline()...

union find 재활훈련 - union by size 복기하기

1. 문제1 4143번: Bridges and Tunnels (acmicpc.net) 4143번: Bridges and Tunnels The first line of input contains one integer specifying the number of test cases to follow. Each test case begins with a line containing an integer n, the total number of bridges or tunnels built. This number will be no more than 100,000. We assume that al www.acmicpc.net 2. 풀이1 서로 연결되는 간선이 주어질때마다 각 노드의 집합 크기를 구하는 문제 find..

2023. 1. 8. 00:20

다익스트라 알고리즘 응용하기 - 특정 조건에 맞는 길이를 가진 최단 경로를 구하는 방법

1. 문제 8347번: Bug (acmicpc.net) 8347번: Bug The first line of input contains two integers n and m (2 ≤ n ≤ 200 000, 0 ≤ m ≤ 500 000), separated by a single space and denoting the number of cities and the number of roads in Byteland. The cities are numbered from 1 to n; Bytetown has number www.acmicpc.net 2. 풀이 목적지까지 최단경로를 구해야하는데 문제는 홀수길이를 가지는 최단 경로를 구해야한다 그냥 사용하면 2를 답을 내는데.. 문제에서 원하는건 7로 가는 경로이다 쉬..

탐욕적인 사람 되기 -정수 a를 k로 만들기 문제-

1. 문제 25418번: 정수 a를 k로 만들기 (acmicpc.net) 25418번: 정수 a를 k로 만들기 7(A), 8(연산 1), 9(연산 1), 18(연산 2), 19(연산 1), 38(연산 2), 76(연산 2), 77(연산 1)이 최소 연산이므로 정답은 7이다. www.acmicpc.net 정수 a에 1을 더하거나 2를 곱해서 k를 만들때, 연산 횟수의 최솟값을 구하는 문제 2. 풀이1(BFS) 이 문제의 기본은 BFS로 푸는 것이다 정수 a에서 시작해서, delta 배열은 1,2가 있고 1이 나오면 a + 1에 가서 범위를 벗어난건지, 이미 방문했는지 검사 2가 나오면 2a에 가서 범위를 벗어난건지, 이미 방문했는지 검사 from collections import deque def bfs(..

2022. 10. 27. 01:26

그래프의 노드를 정렬하는 위상정렬 정복하기

1. 개요 위상 정렬(topology sort)은 정렬 알고리즘의 일종 위상 정렬은 순서가 정해져 있는 일련의 작업을 차례대로 수행해야할 때 사용할 수 있는 알고리즘 이론적으로, 위상 정렬은 방향 그래프의 모든 노드를 '방향성에 거스르지 않도록 순서대로 나열하는 것'이다. 실제 예를 들어 위상 정렬을 수행하는 전형적인 예시는, '선수과목을 고려한 학습 순서 결정'이 있다. 예를 들어 컴퓨터공학과 커리큘럼에는 '자료구조'과목을 수강한 뒤에, '알고리즘'강의를 수강하는 것을 권장한다. 이 경우에 자료구조와 알고리즘을 각각 노드로 표현하고, 자료구조에서 알고리즘으로 이어질 수 있도록 방향성을 갖는 간선을 그릴 수 있다. 그래프 상에서 선후 관계가 있다면, 위상 정렬을 수행하여 모든 선후 관계를 지키는 전체 순..

2022. 10. 23. 19:45

검색엔진의 역사를 바꾼 pagerank 알고리즘 파헤치기

1. 그래프로 표현하는 웹 웹은 웹페이지와 하이퍼링크로 포함된 거대한 방향성 그래프다 웹페이지를 node, 하이퍼링크를 다음 웹페이지를 향하는 link로 볼 수 있다. 물론 웹페이지는 하이퍼링크와 무관한 keyword정보를 포함한다 웹페이지의 하이퍼링크를 클릭하여 링크가 가리키는 다음 웹페이지로 이동할 수 있다 2. pagerank는 왜 등장했을까 2-1) 거대한 디렉토리 수십억에서 수백억개가 있을 것이라고 추측하는 웹페이지에서 원하는 정보를 어떻게 찾을 수 있을까? 먼저 전 세계에 존재하는 모든 웹을 카테고리로 구분하여 하나의 디렉토리로 저장했다. 97년도의 네이버 모습으로 카테고리로 웹을 저장했다는 것이 보인다 시간이 흐르면서 카테고리 수와 깊이는 무한정 증가할 것이고 심지어 카테고리 구분은 모호해지..