https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; // 미로 탐색 public class _2178 { public static int[] dx = {1, -1, 0, 0}; public static int[] dy = {0, 0, 1, -1}; public static boolean[][] visit; public static void ..
https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net ~~ 1 ~~ import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; // 섬의 개수 public class _4963 { public static int[] dx = {1, -1, 0, 0, 1, 1, -1, -1}; public static int[] dy = {0, 0, 1, -1, 1, -1, -1,..
https://www.acmicpc.net/problem/11724 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 ~~ 1 ~~ import java.util.Scanner; // 연결 요소의 개수 public class _11724 { public static boolean[] visit; // 1부터 n까지의 정점 중 방문하지 않은 노드를 시작노드로 설정 및 탐색 public static int solution(boolean[][] graph..
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.util.LinkedList; import java.util.Queue; import java.util.Scanner; // DFS와 BFS public class _1260 { public static boolean[] visit; public static Queue queue = new LinkedList(); public static..
https://www.acmicpc.net/problem/2589 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net #include // 보물섬 #include #include #define max(a, b) a > b ? a : b char graph[51][51]; int visit[51][51]; int dx[4] = { 0, 0, 1, -1 }; int dy[4] = { 1, -1, 0, 0 }; int ans = -1; typedef struct { int x; int y; struct node* next..
https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net ~~ 1 ~~ #include // 음식물 피하기 #define max(a, b) a > b ? a : b int graph[101][101] = { 0, }; int visit[101][101] = { 0, }; int dx[4] = { 0, 0, 1, -1 }; int dy[4] = { 1, -1, 0, 0 }; int ans = 0; int cnt; ..
https://www.acmicpc.net/problem/5014 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net #include // 스타트링크 #include int ans = -1; int visit[1000001] = { 0, }; typedef struct { long long data; int cnt; struct node* next; }node; typedef struct { node* front; node* rear; int size; }QUEUE; void init_QUEUE(QUEUE* q) { q->f..
https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A B #define min(a, b) a > b ? b : a int ans = 1000000000; void dfs(long long a, int cnt, long long b) { if (b < a) return; if (a == b) { ans = min(ans, cnt); return; } dfs(a * 2, cnt + 1, b); dfs((a * 10) + 1, cnt + 1, b); } int main() { long long a, b; scanf("%lld %lld..
https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net ~~ 1 ~~ #include // 촌수계산 int graph[101][101] = { 0, }; int visit[101] = { 0, }; int cnt = -1; int ans = -1; void dfs(int n, int now, int goal) { visit[now] = 1; cnt++; if (now == goal) { ans = cnt; return; } for ..
https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net ~~ 1 ~~ #include // 유기농 배추 #include int graph[51][51]; int visit[51][51]; int dx[4] = { 1, -1, 0, 0 }; int dy[4] = { 0, 0, 1, -1 }; int ans = 0; void dfs(int y, int x, int m, int n) { visit[y][x] = 1; for (int i = 0; i < 4; i++) {..