728x90
https://school.programmers.co.kr/learn/courses/30/lessons/1844
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
import java.io.*;
class Solution {
static boolean[][] visited;
static int row;
static int col;
static int[] dx = {-1, 1, 0, 0};
static int[] dy = {0, 0, 1, -1};
static int answer = -1;
static int[][] map;
public int solution(int[][] maps) {
row = maps.length;
col = maps[0].length;
visited = new boolean[row][col];
map = new int[row][col];
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
map[i][j] = maps[i][j];
}
}
visited[0][0] = true;
bfs(0, 0, 1);
return answer;
}
public void bfs(int x, int y, int c) {
Queue<int[]> queue = new LinkedList<>();
queue.add(new int[]{x, y, c});
while (!queue.isEmpty()) {
int[] cur = queue.poll();
int cx = cur[0];
int cy = cur[1];
int cc = cur[2];
if (cx == row - 1 && cy == col - 1) {
answer = cc;
}
for (int i = 0; i < 4; i++) {
int nx = cx + dx[i];
int ny = cy + dy[i];
int nc = cc + 1;
if (nx >= 0 && ny >= 0 && nx < row && ny < col && !visited[nx][ny] && map[nx][ny] == 1) {
visited[nx][ny] = true;
queue.add(new int[]{nx, ny, nc});
}
}
}
}
}
회고
- 진짜 쉬운 bfs문제였다
- 하지만 에디터를 사용하지 않고 백준이랑 다른 방법으로 풀려하니까 생각보다 문법오류가 났다
- 에디터를 사용하지 않고 문제를 푸는 방법을 더 공부해야겠다.
'Algorithm Study > Programmers (JAVA)' 카테고리의 다른 글
프로그래머스 Lv2_올바른 괄호_Java (0) | 2024.06.25 |
---|---|
프로그래머스 Lv3_네트워크_Java (0) | 2024.06.23 |
프로그래머스 Lv3_정수 삼각형_Java (0) | 2024.06.23 |
프로그래머스 Lv2_ 최댓값과 최솟값 (0) | 2024.06.20 |
프로그래머스_숫자의 표현_JAVA (0) | 2024.04.26 |