java
16 x 16 행렬의 형태로 만들어진 미로에서 출발점(2)으로부터 도착지점(3)까지 갈 수 있는 길이 있는지 구하는 문제 (1은 벽, 0은 이동할 수 있는 경로)
깊이 우선 탐색(DFS, Depth-First Search)을 사용해 문제를 해결하였다.
DFS 문제에 더 적응하기 위해 많은 문제를 풀어봐야겠다.
import java.util.Scanner;
import java.io.FileInputStream;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
for(int test_case = 1; test_case <= 10; test_case++)
{
int[][] maze = new int[16][16];
boolean[][] visited = new boolean[16][16];
int t = sc.nextInt();
for (int i = 0; i < 16; i++) {
String line = sc.next();
for (int j = 0; j < 16; j++) {
maze[i][j] = line.charAt(j) - '0';
}
}
System.out.println("#" + test_case + " " + dfs(maze, visited, 1, 1));
}
}
private static int dfs(int[][] maze, boolean[][] visited, int x, int y) {
if (x < 0 || y < 0 || x >= 16 || y >= 16 || maze[x][y] == 1 || visited[x][y]) {
return 0;
}
if (maze[x][y] == 3) {
return 1;
}
visited[x][y] = true;
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
for (int i = 0; i < 4; i++) {
if (dfs(maze, visited, x + dx[i], y + dy[i]) == 1) {
return 1;
}
}
return 0;
}
}
Java들어가며 소프트웨어를 개발할 때 메모리 관리 방식은 프로그램의 안정성과 성능을 좌우하는 핵심 요소입니다. 특히 자바스크립트,…
들어가며 소프트웨어 개발자는 코드가 어떻게 실행되는지 정확히 이해해야 할 필요가 있습니다. 우리가 작성한 프로그램은 결국…
서론 현대 웹 애플리케이션 아키텍처에서 웹 서버(Web Server) 와 웹 애플리케이션 서버(WAS, Web Application Server)…
HTTP 헤더(Header)란? HTTP(Header)는 클라이언트와 서버 간에 교환되는 메타데이터로, 요청(Request)과 응답(Response)에 부가적인 정보를 실어 나르는 역할을…
Readable Code: 읽기 좋은 코드를 작성하는 사고법Practical Testing: 실용적인 테스트 가이드 강의와 함께한 인프런 워밍업 클럽…
Readable Code: 읽기 좋은 코드를 작성하는 사고법Practical Testing: 실용적인 테스트 가이드 강의와 함께한 인프런 워밍업 클럽…