BFS 36

[백준] 2021 최소 환승 경로 python

https://www.acmicpc.net/problem/2021 2021번: 최소 환승 경로 첫째 줄에 역의 개수 N(1≤N≤100,000), 노선의 개수 L(1≤L≤100,000)이 주어진다. 다음 L개의 줄에는 각 노선이 지나는 역이 순서대로 주어지며 각 줄의 마지막에는 -1이 주어진다. 마지막 줄에는 출발 www.acmicpc.net import sys; input = sys.stdin.readline from collections import deque N, L = map(int, input().split()) station = [list() for _ in range(N+1)] line = [list() for _ in range(L)] for i in range(L): tmp = list(m..

STUDY/Algorithm 2021.08.15

[백준] 3055 탈출 python

https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net from collections import deque import sys; input = sys.stdin.readline def bfs_step(start_array, visited, opposit_visited, isSonic): delta = [(-1, 0), (1, 0), (0, -1), (0, 1)] ret = deque() while start_array: cur_x, cur_y = start_ar..

STUDY/Algorithm 2021.08.10

[백준] 2573 빙산, python

https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net import sys; input = sys.stdin.readline; H, W = map(int, input().split()) glacier = [list(map(int, input().split())) for _ in range(H)] answer = 0 while True: answer += 1 visit = [[0 for _ in range(W)] for _ in range(H)] ..

STUDY/Algorithm 2021.08.03

[백준] 16236 아기 상어, python

https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net import sys; input = sys.stdin.readline from collections import deque def search(start, size, board): d = [(-1, 0), (0, -1), (0, 1), (1, 0)] ret = [] visit = [[-1 for _ in range(N)] for _ in range(N)] visit[start[0]][sta..

STUDY/Algorithm 2021.07.22

[백준] 16234 인구 이동 python(pypy3)

https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net import sys from collections import deque def bfs(r, c): visit[r][c] = 1 q = deque() q.append((r, c)) ret = [(r,c)] while q: y, x = q.popleft() for i in range(4): yy = y + dy[i] xx = x + dx[i] # 주어진 나라의 크기를 넘는 경우 if ..

STUDY/Algorithm 2021.07.08

[프로그래머스] 게임 맵 최단 거리, python

https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr from collections import deque def solution(maps): answer = -1 n, m = len(maps), len(maps[0]) s, e = (0,0), (n - 1, m - 1) visit = [[0] * m for _ in range(n)] dx = [1,0,-1,0]..

STUDY/Algorithm 2021.06.22

[프로그래머스] 카카오프렌즈 컬러링북, C++

https://programmers.co.kr/learn/courses/30/lessons/1829 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr #include #include using namespace std; int bfs(int r, int c, bool visit[100][100], int m, int n, vector picture) { int value = picture[r][c]; int count = 0; int dx[] = {-1,1,0,0}; int dy[] = {0,0,-1,1}; qu..

STUDY/Algorithm 2021.06.21

[백준] 1261 알고스팟 python

https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net import sys; input = sys.stdin.readline from collections import deque M, N = map(int, input().rstrip().split()) matrix = [list(map(int, list(input().rstrip()))) for _ in range(N)] visit = [[M + N] * M for _ in ra..

STUDY/Algorithm 2021.05.18

[백준] 1240 노드사이의 거리 python

www.acmicpc.net/problem/1240 1240번: 노드사이의 거리 N(2≤N≤1,000)개의 노드로 이루어진 트리가 주어지고 M(M≤1,000)개의 두 노드 쌍을 입력받을 때 두 노드 사이의 거리를 출력하라. www.acmicpc.net # import sys # input = sys.stdin.readline from collections import deque N, M = map(int, input().split()) link_arr = [list() for _ in range(N + 1)] for _ in range(N - 1): n1, n2, w = map(int, input().split()) link_arr[n1].append((n2, w)) link_arr[n2].append(..

STUDY/Algorithm 2021.04.29

[백준] 2644 촌수계산 python

www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1≤n≤100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어진 www.acmicpc.net import sys input = sys.stdin.readline from collections import deque N = int(input()) s, e = map(int, input().split()) link_arr = [list() for _ in range(N + 1)] M = int(input()) for _ in range(M): n1, n2 = map(int, input().s..

STUDY/Algorithm 2021.04.29