너비 우선 탐색 30

백준(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) 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..

백준(Python) 16234번 인구 이동 풀이

Python으로 구현한 16234번 인구 이동 문제 풀이입니다. https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net from collections import deque # 특정 위치에서 출발하여 모든 연합을 체크한 뒤에 데이터 갱신 def process(x, y, index) : # (x, y)의 위치와 연결된 나라(연합) 정보를 담는 리스트 united = [] united.append((x, y)) # 너비 우선 탐색(BFS)을..

백준(Python) 13460번 구슬 탈출 2 풀이

Python으로 구현한 13460번 구슬 탈출 2 문제 풀이입니다. https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net from collections import deque n, m = map(int, input().split()) board = [] for i in range(n) : board.append(list(input())) for j in range(m) : if board[i][j] ..

백준(Python) 16236번 아기 상어 풀이

Python으로 구현한 16236번 아기 상어 문제 풀이입니다. https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net from collections import deque INF = 1e9 # 무한을 의미하는 값으로 10억을 설정 # 맵의 크기 N을 입력받기 n = int(input()) # 전체 모든 칸에 대한 정보 입력 array = [] for i in range(n) : array.append(list(map(int, input().s..