[BOJ] 백준 2206 벽 부수고 이동하기 (Swift)
문제 https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 풀이 BFS로 풀 수 있는 문제입니다. 벽은 최대 1번 부수고 이동이 가능합니다. 방문 배열을 2차원 배열로 선언하는 것이 아닌, 벽을 한 번 부시고 방문했는지, 부시지 않고 방문했는지의 여부를 알 수 있도록 3차원 배열로 선언해주어야 합니다. BFS를 작성할 때, Queue에 다음과 같이 담아주었습니다. (y, x, 벽 부순 횟수, 몇 칸 이동) 현재 칸에서 다음 ..
[BOJ] 백준 7569 토마토 (Swift)
문제 https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 풀이 https://dev-mandos.tistory.com/264 [BOJ] 백준 7576 토마토 (Swift) 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 ..
[BOJ] 백준 7576 토마토 (Swift)
문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 풀이 BFS로 풀 수 있는 문제입니다. 먼저 익어있는 토마토의 y,x 좌표를 queue에 넣어주고 시작을 해야합니다. 그 이후, 익어있는 토마토로부터 상하좌우로 0인 토마토가 익게되는데, 0일 때만 queue에 넣어주고, 0인 좌표를 익어있던 토마토 + 1의 값으로 설정해줍시다. 예를들어 [0, 0] [0, 1] 토마토가 위처럼 주어지고 하루가 지나면, [0, 2] [2, 1..