목록생활 (730)
No Rules Rules
벽 부수고 이동하기 https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net // woohyeon.kim // kim519620.tistory.com #include #include #include #include #include #include using namespace std; int N, M, arr[1000][1000], tmp[1000][1000][2], dx[4], dy[4]; vector ans; void bfs(..
뱀과 사다리 게임 https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net // woohyeon.kim // kim519620.tistory.com #include #include #include using namespace std; int ans[101]; int N, M; int check[101]; void bfs(register int p) { ans[p] = 1; queue q; q.push(p);..
토마토 https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net // woohyeon.kim // kim519620.tistory.com #include #include #include using namespace std; int M, N, H, arr[100][100][100], dx[4], dy[4]; void bfs() { register int x, y, z; queue q; for (register int k = 0, i..
토마토 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net // woohyeon.kim // kim519620.tistory.com #include #include #include using namespace std; int M, N, arr[1000][1000], dx[4], dy[4]; void bfs() { register int x, y; queue q; for (register int i = 0, j; i < N; ++i)..
나이트의 이동 https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net // woohyeon.kim // kim519620.tistory.com #include #include #include using namespace std; int dx[8], dy[8], I; int arr[300][300]; int bfs(register int sx, register int sy, register int ex, register int ey) { register ..
숨바꼭질 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net // woohyeon.kim // kim519620.tistory.com #include #include #include #include using namespace std; bool visit[100000]; int bfs(register int n, register int k) { visit[n] = true; queue q; q.push(make_pair(..
미로 탐색 https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net // woohyeon.kim // kim519620.tistory.com #include using namespace std; int N, M, dx[4], dy[4], arr[100][100]; bool visit[100][100]; void dfs(register int x, register int y) { if (x == N - 1 && y == M - 1)return; visit[x][y] = true; for..
유기농 배추 https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net // woohyeon.kim // kim519620.tistory.com #include using namespace std; int T, M, N, K, arr[50][50], dx[4], dy[4], ans; bool visit[50][50]; bool dfs(register int x, register int y) { if (visit[x][y])return false; visit[x][y]..
단지번호붙이기 https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net // woohyeon.kim // kim519620.tistory.com #include #include #include #include using namespace std; int N, arr[25][25], dx[4], dy[4], cnt; bool visit[25][25]; bool dfs(register int x, register int y) { if (visit[x][y] ..
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 // woohyeon.kim // kim519620.tistory.com #include #include #include #include #include using namespace std; int N, M, V, cnt1, cnt2, ans1[1001], ans2[1001]; bool visit1[1001], visit2[1001]; map ..