https://school.programmers.co.kr/learn/courses/30/lessons/1844?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
BFS 구현 시 LinkedList vs. ArrayDeque
참고한 블로그
https://tecoble.techcourse.co.kr/post/2021-05-10-stack-vs-deque/
Java 의 Stack 대신 Deque
🤹♀️ 자바에서 자료구조 Stack 을 대신해서 사용하는 Deque 에 대해서 알아보자. 이 글은 기능을 사용하는 방식이 아닌 ‘왜 Stack 대신 Deque 를 사용해야 하는가?‘에 대해서 설명한다. Stack 후
tecoble.techcourse.co.kr
DFS vs. BFS 선택
https://cookiee.tistory.com/629
[Java] 프로그래머스: 게임 맵 최단 거리
BFS 최단 경로를 찾는 문제에서는 도착점에 도달한 순간 종료되는 BFS를 이용한다. DFS는 모든 경로를 탐색하기 때문에 적합하지 않다. [그래프 탐색] BFS / DFS [그래프 탐색] BFS / DFS BFS(Breadth-First Sear
cookiee.tistory.com
import java.util.*;
class Solution {
static int[][] visited;
static int M;
static int N;
static int [] dx = {1, -1, 0, 0};
static int [] dy = {0, 0, 1, -1};
static boolean checkValid(int x, int y) {
if(x < 0 || x >= M || y < 0 || y >= N) return false;
return true;
}
static void BFS(int[][] maps) {
Queue<int[]> que = new ArrayDeque<int[]>();
que.add(new int[]{0, 0});
visited[0][0] = 1;
while(!que.isEmpty()) {
int[] now = que.remove();
int y = now[0];
int x = now[1];
for(int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if(!checkValid(ny, nx)) {
continue;
}
if(visited[ny][nx] == 0 && maps[ny][nx] == 1) {
visited[ny][nx] = visited[y][x] + 1;
que.add(new int[]{ny, nx});
}
}
}
}
public static int solution(int[][] maps) {
int answer = 0;
M = maps.length;
N = maps[0].length;
visited = new int[M][N];
BFS(maps);
answer = visited[M-1][N-1] == 0 ? -1 : visited[M-1][N-1];
return answer;
}
}
'Algorithm' 카테고리의 다른 글
파일명 정렬 (0) | 2023.08.03 |
---|---|
[프로그래머스] 방금 그 곡 Java (0) | 2023.08.01 |
[프로그래머스] 캐시 (0) | 2023.07.18 |
[프로그래머스] Java 요격 시스템 (0) | 2023.06.30 |
[프로그래머스] 완주하지 못한 선수 Java (0) | 2023.06.20 |