그래프 탐색 33

백준(Python) 2667번 단지번호붙이기 풀이

Python으로 구현한 2667번 단지번호붙이기 문제 풀이입니다. https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net ** case 1 - DFS 방식 def dfs(x, y) : global count if not (0

백준(JAVA) 1260번 DFS와 BFS 풀이

Java으로 구현한 1260번 DFS와 BFS 문제 풀이입니다. https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net import java.io.*; import java.util.*; public class Main { static int[][] graph; static boolean[] visited; static int n; public static void main(String[] args) throws ..

백준(Python) 1260번 DFS와 BFS 풀이

Python으로 구현한 1260번 DFS와 BFS 문제 풀이입니다. https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net from collections import deque def dfs(start) : visited[start] = 1 # 방문 처리 print(start, end=' ') for i in range(1, n + 1) : if visited[i] == 0 and graph[start][i] ==..

백준(Python) 17471번 게리맨더링 풀이

Python으로 구현한 17471번 게리맨더링 문제 풀이입니다. https://www.acmicpc.net/problem/17471 17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net from collections import defaultdict, deque def combinations(arr, r) : for i in range(len(arr)) : if r == 1 : yield [arr[i]] else : for next in combinations(arr[i+1:], r-1) : yield [arr[i]] + next def..

백준(Python) 17070번 파이프 옮기기 1 풀이

Python으로 구현한 17070번 파이프 옮기기 1 문제 풀이입니다. https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net n = int(input()) data = [list(map(int, input().split())) for _ in range(n)] # 0: 가로, 1: 세로, 2: 대각선 dp = [[[0] * n for _ in range(n)] for _ in range(3)] dp[0][0][1] = 1 #..

백준(Python) 21609번 상어 중학교 풀이

Python으로 구현한 21609번 상어 중학교 문제 풀이입니다. https://www.acmicpc.net/problem/21609 21609번: 상어 중학교 상어 중학교의 코딩 동아리에서 게임을 만들었다. 이 게임은 크기가 N×N인 격자에서 진행되고, 초기에 격자의 모든 칸에는 블록이 하나씩 들어있고, 블록은 검은색 블록, 무지개 블록, 일반 블록 www.acmicpc.net from collections import deque n, m = map(int, input().split()) data = [list(map(int, input().split())) for _ in range(n)] result = 0 def bfs(x, y, num) : q = deque() q.append([x, y]) d..

백준(Python) 23288번 주사위 굴리기 2 풀이

Python으로 구현한 23288번 주사위 굴리기 2 문제 풀이입니다. https://www.acmicpc.net/problem/23288 23288번: 주사위 굴리기 2 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 가장 왼 www.acmicpc.net from collections import deque import copy n, m, k = map(int, input().split()) data = [list(map(int, input().split())) for _ in range(n)] ball = [2, 4, 1, 3, 5, 6] # 초기 주사위 (..

백준(Python) 19238번 스타트 택시 풀이

Python으로 구현한 19238번 스타트 택시 문제 풀이입니다. https://www.acmicpc.net/problem/19238 19238번: 스타트 택시 첫 줄에 N, M, 그리고 초기 연료의 양이 주어진다. (2 ≤ N ≤ 20, 1 ≤ M ≤ N2, 1 ≤ 초기 연료 ≤ 500,000) 연료는 무한히 많이 담을 수 있기 때문에, 초기 연료의 양을 넘어서 충전될 수도 있다. 다 www.acmicpc.net from collections import deque n, m, cost = map(int, input().split()) data = [list(map(int, input().split())) for _ in range(n)] car_x, car_y = map(int, input().spli..

백준(Python) 20058번 마법사 상어와 파이어스톰 풀이

Python으로 구현한 20058번 마법사 상어와 파이어스톰 문제 풀이입니다. https://www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net from collections import deque n, q = map(int, input().split()) data = [list(map(int, input().split())) for _ in range(2 ** n)] l = list(map(int, input().split())) max_l..

백준(Python) 17142번 연구소 3 풀이

Python으로 구현한 17142번 연구소 3 문제 풀이입니다. https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net from collections import deque import copy n, m = map(int, input().split()) graph = [] virus = [] result = int(1e9) # 상 하 좌 우 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] for i in range(n) : data = li..