본문 바로가기

Algorithm Problems/그래프

(50)
[백준/Python] 11657번: 타임머신 문제 https://www.acmicpc.net/problem/11657 11657번: 타임머신 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. www.acmicpc.net 문제 요약 N개의 도시가 있다. 그리고 한 도시에서 다른 도시에 도착하는 버스가 M개가 있다. 각 버스는 시작 도시 A, 도착 도시 B, 걸리는 시간 C로 나타낼 수 있다. + C = 0인 경우는 순간 이동을 하는 경우, C < 0인 경우는 타임머신으로 시간을 되돌아가는 경우이다. 버스 노선의 정보가 주어질 때, 1번 도시에서 출발..
[백준/Python] 22865번: 가장 먼 곳 문제 https://www.acmicpc.net/problem/22865 22865번: 가장 먼 곳 $N$개의 땅 중에서 한 곳에 자취를 하려고 집을 알아보고 있다. 세 명의 친구 $A$, $B$, $C$가 있는데 이 친구들이 살고 있는 집으로부터 가장 먼 곳에 집을 구하려고 한다. 이때, 가장 먼 곳은 선택할 www.acmicpc.net 문제 요약 N개의 땅 중에서 한 곳에 자취를 하기 위해 집을 알아보고 있다. 세 친구 A, B, C가 살고 있는 집으로부터 가장 먼 곳에 집을 구하려고 한다. 이 때, 가장 먼 곳은 선택할 집에서 가장 가까운 친구의 집까지의 거리를 기준으로 가장 먼 곳을 의미한다. ex) X 위치에 있는 집에서 A, B, C의 집까지 거리가 각각 3, 5, 4이고, Y 위치에 있는 집..
[백준/Python] 1916번: 최소비용 구하기 문제 https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 문제 요약 N개의 도시(정점)와 한 도시에서 출발하여 다른 도시에 도착하는 M개의 버스(간선)가 있다. + 각 도시들은 번호가 존재하고, 버스마다 비용(양수)이 존재한다. 출발 도시에서 도착 도시까지 가는데 드는 최소 비용을 출력한다. 코드 from collections import deque import sys import heapq input = sys...
[백준/Python] 1753번: 최단 경로 문제 https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 문제 요약 간선의 정보를 입력 받아 방향 그래프가 주어진다. + 모든 정점에는 1부터 정점 개수만큼의 번호가 매겨진다. 간선의 개수만큼 세 개의 정수 (u, v, w)가 순서대로 주어진다. + u에서 v로 가는 가중치 w인 간선이 존재한다는 의미이다. 시작점 번호를 입력 받고, 시작점에서 다른 모든 정점으로의 최단 경로를 출력한다. + 서로 다른 두 정점..
[백준/Python] 2589번: 보물섬 문제 https://www.acmicpc.net/problem/2589 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net 문제 요약 각 칸이 육지(L), 바다(W)로 이루어진 2차원 배열 보물 지도가 있다. 보물은 서로 간에 최단 거리로 이동하는데 있어 가장 긴 시간이 걸리는 육지 두 곳에 나뉘어 묻혀 있다. + 최단 거리로 이동하려면 같은 곳을 두 번 이상 지나가거나 멀리 돌아가서는 안된다. 보물이 묻혀 있는 두 곳 간의 최단 거리로 이동하는 시간을 출력한다. + 한 칸을 이동하는 데 1이 걸린다. 코드 from..
[백준/Python] 7562번: 나이트의 이동 문제 https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 문제 요약 l × l 크기의 체스판 위에 나이트 한 개가 있다. 현재 나이트의 위치와 나이트가 이동하려는 위치를 입력 받고, 최소 몇 번만에 이동할 수 있는지를 출력한다. 코드 from collections import deque t = int(input()) # 나이트가 이동할 수 있는 경우의 수 dx = [-2, -1, 1, 2, 2, 1, -1, -2] dy = [1, 2, 2, 1, -..