목록그래프 탐색 (45)
기록방
👉 문제링크 13459번: 구슬 탈출 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 🔸 문제 분석 🔸 N x M 보드판에 모서리는 막혀있고, 빨간 공 : R, 파란 공 : B, 구멍 : O 가 주어진다. 보드판을 기울이면 두 공이 움직일 수 있는 공간 끝까지 한쪽으로 이동한다. 빨간 공 만 구멍으로 뺄 수 있으면 1, 없으면 0 을 출력한다. 보드판을 기울이는 4가지 선택에 따른 결과를 확인해야 하므로 BFS를 사용한다. 공의 굴러감, 게임 종료 확인을 시뮬레이션한다. 🔸 코드 🔸 imp..
👉 문제링크 17141번: 연구소 2 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 승원이는 연구소의 특정 위치에 바이러스 M개를 놓을 것이고, 승원이의 신호와 동시에 바이 www.acmicpc.net 🔸 문제 분석 🔸 N x N 연구소에서 M개의 바이러스가 모두 퍼지는 최소 시간을 출력한다. 바이러스를 놓을 수 있는 곳 : 2 , 빈 공간 : 0, 벽 : 1 2의 개수는 10 이하의 자연수이다. 모두 놓을 수 없는 경우는 -1을 출력한다. 바이러스를 놓을 수 있는 2가 적힌 자리들 중 M개를 뽑아야 하므로 조합이다. 바이러스가 퍼지는 것을 구현하기 위해서 BFS를 사용한다. 🔸 코드 🔸 import java.io.BufferedReader; import j..
👉 문제링크 2636번: 치즈 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모 칸에 X친 부분)에는 치즈가 놓 www.acmicpc.net 🔸 문제 분석 🔸 H x W 격자 판에 치즈가 있다. 치즈는 가장자리에 놓이지 않는다. 공기와 접촉한 치즈는 한 시간 뒤 녹아 없어진다. 치즈 안에는 1개 이상의 구멍이 있다. 구멍 안의 공기는 외부 공기와 접촉하기 전까진 치즈를 녹이지 않는다. 치즈가 모두 녹아 없어지는 데 까지 걸린 시간과 직전 치즈 개수를 출력한다. 그래프 탐색이므로 BFS혹은 DFS를 사용한다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOE..
👉 문제링크 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 🔸 문제 분석 🔸 H x W 격자 판에서 왼쪽 위 끝 부터 오른쪽 아래 끝 까지 가는 동작의 최소값을 출력한다. 원숭이의 움직임 : 인접 4칸으로 이동 가능 말의 움직임 : k번 만큼 이동 가능 BFS로 2가지 풀이를 할 수 있다. 말 이동 횟수를 적게 쓸 수록 좋다.(그리디) 3중 배열로 방문을 체크한다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; impor..
👉 문제링크 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 🔸 문제 분석 🔸 T번의 테스트 케이스를 돌린다. 계산기는 10진수 4자리 숫자로 0000~9999까지 처리할 수 있다. 4가지 연산 D, S, L, R이 있다. A부터 시작해 B가 되는 최소길이 명령어를 출력한다. 가중치가 없는 최단거리(최소경로) 문제이므로 BFS 를 사용한다. 큐에서 현재 숫자와 지금까지의 연산을 기록할 클래스를 만든다. D : 2n%10000 S : n-1 (n=1이면, 9999) L : (LShift) n = n..