[백준 1167번] 트리의 지름 (Python/파이썬)
·
📚알고리즘/백준
https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 트리의 지름: 노드와 노드 사이의 거리가 가장 긴 거리 이 문제에서의 트리는 가중치가 있는 트리이므로 거리를 구할때 그냥 +1씩 하는 것이 아니라 가중치를 저장했다가 가중치를 더해주어야한다. 이 문제에서 중요한 개념이 하나 있다 "임의의 노드에서 가장 긴 경로로 연결되어 있는 노드는 트리의 지름에 해당하는 두 노드중 하나이다." 위의 개념을 이용하여 단 2번의 탐색으로도 가장 긴 ..
[백준 1325번] 효율적인 해킹 (C++)
·
📚알고리즘/백준
https://www.acmicpc.net/problem/1325 > n >> m; bool* visited = new bool[n+1]; memset(visited,false,sizeof(visited)); int* ans = new int[n+1]; vector com(n+1,vector()); for(int i = 0; i > a >> b; com[b].push_back(a); } for(int i = 1; i < n+1 ; i++){ BFS(i, com, visited, ans); fill_n(visited, n+1, false); } int max_val = *max_element(ans+1, ans + n+1); for(int i = 1; i < n+1; i++){..
[백준 4963번] 섬의 개수 (Python/파이썬)
·
📚알고리즘/백준
https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 평범한 그래프 탐색문제이다. DFS를 사용해도 좋고, BFS를 사용해도 좋다. 본인은 BFS를 사용하여 각 섬의 개수를 탐색하였다. 차이점라고 하기에도 뭐하지만 굳이 뽑자면, 대각선에 있는 섬도 연결되어있는 섬으로 보기 때문에 현재 좌표를 기준으로 주위에 있는 모든 방향(8방향)을 모두 탐색해야한다. 그래프 문제 푼지 오래된거 같아서 오랜만에 간단히 하나 풀었다. 코드는 다음과 같다. imp..
[백준 12383번] Diamond Inheritance (Large) (Python/파이썬)
·
📚알고리즘/백준
https://www.acmicpc.net/problem/12383 12383번: Diamond Inheritance (Large) The first line of the input gives the number of test cases, T. T test cases follow, each specifies a class diagram. The first line of each test case gives the number of classes in this diagram, N. The classes are numbered from 1 to N. N lines fo www.acmicpc.net 구글 Code jam에 출제된 문제이다. 그래프의 한 노드에서 시작해서 다른 노드에 도착하는 경로의 가짓수가 최..
[백준 1389번] 케빈 베이컨의 6단계 법칙 (Python/파이썬)
·
📚알고리즘/백준
https://www.acmicpc.net/problem/1389 1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻 www.acmicpc.net 본인은 BFS를 이용해서 문제를 풀었다. 친구 관계 리스트를 만들어주고, 친구를 한번 건너 뛸때마다 (이전 친구 단계+1, 현재친구)를 튜플로 큐에 저장하였다. BFS탐색이 모두 끝나고는 처음 시작한 친구의 케빈 베이컨의 수를 구해서 리턴해주었다.나온 케빈 베이컨의 수 중에서 가장 작은 친구를 출력해야하므로 마지막에 정렬까지 해주었다.. 당연하지만 ..
[백준 7576번] 토마토 (Python/파이썬)
·
📚알고리즘/백준
https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 백준 2178번과 거의 똑같은 문제라고 할 수 있다. 2178번에서 미로를 탐색할때 몇번만에 갈 수 있는지 깊이 지도를 그려서 문제를 해결했었다. 이번 문제도 마찬가지로 어차피 하루당 한 칸씩 토마토가 익으므로 깊이지도를 그리면된다. 미로 문제와 다른점은 미로는 BFS의 출발점이 하나였지만, 토마토는 시작할 때 부터 여러개가 익어 있을 수 있기 때문에 queue에 익은 토마토를 모..
루오
'백준 bfs' 태그의 글 목록