Algorithm/BFS&DFS 23

[Python] 백준 17086번 아기 상어2

문제 17086번: 아기 상어 2 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸과 상어의 수가 각각 한 개 이상인 입력만 www.acmicpc.net 입력 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸과 상어의 수가 각각 한 개 이상인 입력만 주어진다. 출력 첫째 줄에 안전 거리의 최댓값을 출력한다. 입력 예제 5 4 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 7 4 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1..

Algorithm/BFS&DFS 2023.04.08

[Python] 백준 18405번 경쟁적 전염

문제 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 입력 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치에 존재하는 바이러스의 번호가 공백을 기준으로 구분되어 주어진다. 단, 해당 위치에 바이러스가 존재하지 않는 경우 0이 주어진다. 또한 모든 바이러스의 번호는 K이하의 자연수로만 주어진다. N+2번째 줄에는 ..

Algorithm/BFS&DFS 2023.04.08

[Python] 백준 1926번 그림

문제 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 입력 첫째 줄에 도화지의 세로 크기 n(1 ≤ n ≤ 500)과 가로 크기 m(1 ≤ m ≤ 500)이 차례로 주어진다. 두 번째 줄부터 n+1 줄 까지 그림의 정보가 주어진다. (단 그림의 정보는 0과 1이 공백을 두고 주어지며, 0은 색칠이 안된 부분, 1은 색칠이 된 부분을 의미한다) 출력 첫째 줄에는 그림의 개수, 둘째 줄에는 그 중 가장 넓은 그림의 넓이를 출력하여라. 단, 그림이 하나도 없는 경우에는 가장 넓은 그림의 넓이는 0이다. 입력 예제 6 5..

Algorithm/BFS&DFS 2023.04.08

[Python] 백준 10026 적록색약

문제 로그인 www.acmicpc.net 입력 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 100) 둘째 줄부터 N개 줄에는 그림이 주어진다. 출력 적록색약이 아닌 사람이 봤을 때의 구역의 개수와 적록색약인 사람이 봤을 때의 구역의 수를 공백으로 구분해 출력한다. 입력 예제 5 RRRBB GGBBB BBBRR BBRRR RRRRR 출력 예제 4 3 문제 풀이 먼저 적록색맹인 경우와 아닌 경우 두 가지로 나눠서 탐색을 진행해야 한다. 적록색맹인 경우 빨간색과 초록색을 같은 색으로 인식해야 하므로 그래프의 값이 'R'일 때 'G'로 바꿔주거나, 'G'일 때 'R'로 바꿔서 탐색을 진행한다. 아직 방문하지 않았고, 이전에 탐색한 그래프의 값과 같은 색인 경우 탐색을 진행하여 BFS/DFS를 진행한 후, 총 탐색..

Algorithm/BFS&DFS 2023.04.07

[Python] 백준 11725번 트리의 부모 찾기

문제 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 입력 첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다. 출력 첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력한다. 입력 예제 7 1 6 6 3 3 5 4 1 2 4 4 7 12 1 2 1 3 2 4 3 5 3 6 4 7 4 8 5 9 5 10 6 11 6 12 출력 예제 4 6 1 3 1 4 1 1 2 3 3 4 4 5 5 6 6 문제 풀이 루트노드가 1부터 시작하므로, 노드1에서 탐색을 시작한..

Algorithm/BFS&DFS 2023.04.07

[Python] 백준 2644번 촌수계산

문제 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 입력 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어진다. 그리고 셋째 줄에는 부모 자식들 간의 관계의 개수 m이 주어진다. 넷째 줄부터는 부모 자식간의 관계를 나타내는 두 번호 x,y가 각 줄에 나온다. 이때 앞에 나오는 번호 x는 뒤에 나오는 정수 y의 부모 번호를 나..

Algorithm/BFS&DFS 2023.04.07

[Python] 백준 11724번 연결 요소의 개수

연결요소 (Connected Component)란? 정점사이에 겹치는 정점이 있는 연결되어 있는 그래프로 왼쪽의 연결요소 개수는 2개, 오른쪽의 연결요소 개수는 3개이다. 연결요소가 성립될 수 있는 조건은 두 가지가 있다. 하나의 연결요소에 속한 모든 정점을 연결하는 경로가 있어야 한다. 다른 연결요소와 같은 정점을 경유하면 안된다. 연결요소는 DFS나 BFS탐색을 통해 구할 수 있다. 문제 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 입력 첫째..

Algorithm/BFS&DFS 2023.04.07

[Python] 백준 2583번 영역 구하기

문제 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 입력 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오른쪽 위 꼭짓점의 x, y좌표값이 빈칸을 사이에 두고 차례로 주어진다. 모눈종이의 왼쪽 아래 꼭짓점의 좌표는 (0,0)이고, 오른쪽 위 꼭짓점의 좌표는(N,M)이다. 입력되는 K개의 직사각형들이 모눈종이 전체를 채우는 경우는..

Algorithm/BFS&DFS 2023.04.07

[Python] 백준 2468번 안전영역

문제 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 입력 첫째 줄에는 어떤 지역을 나타내는 2차원 배열의 행과 열의 개수를 나타내는 수 N이 입력된다. N은 2 이상 100 이하의 정수이다. 둘째 줄부터 N개의 각 줄에는 2차원 배열의 첫 번째 행부터 N번째 행까지 순서대로 한 행씩 높이 정보가 입력된다. 각 줄에는 각 행의 첫 번째 열부터 N번째 열까지 N개의 높이 정보를 나타내는 자연수가 빈 칸을 사이에 두고 입력된다. 높이는 1이상 100 이하의 정수이다. 출력 첫째 줄에 장마철에 물에 잠기지 않는 안전한 영..

Algorithm/BFS&DFS 2023.04.05

[Python] 블록 이동하기 (DFS/BFS)

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 제한사항 board의 한 변의 길이는 5 이상 100 이하입니다. board의 원소는 0 또는 1입니다. 로봇이 처음에 놓여 있는 칸 (1, 1), (1, 2)는 항상 0으로 주어집니다. 로봇이 항상 목적지에 도착할 수 있는 경우만 입력으로 주어집니다. 문제 풀이 편하게 탐색하기 위해 보드 밖 영역에 1을 삽입한 새로운 보드 만들기 현재 위치는 중복되지 않게 하기 위해 튜플로 관리 큐에 현재위치 튜플과 소요된 시간 넣고, 현재 위치 방문처리 큐를 팝했을 때 원하는 위치에 도달 했다면 현재까지 소요된 시간..

Algorithm/BFS&DFS 2023.01.04