개인 공부/TIL
[ TIL - PGS ] 99클럽 코테 스터디 35일차 TIL + 오늘의 학습 가이드
킴도비
2024. 8. 26. 00:28
💡 오늘의 학습 키워드
- 깊이/너비 우선 탐색(DFS/BFS)
✅ 오늘 공부한 내용
- 오늘의 프로그래머스 문제! 게임 맵 최단거리
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
👀 오늘의 회고
🔥 어떤 시도를 했는가?
- 오늘의 풀이..
import java.util.LinkedList;
import java.util.Queue;
public class Solution {
public int solution(int[][] maps) {
// 지도 크기
int n = maps.length;
int m = maps[0].length;
// 이동 방향 (동, 서, 남, 북)
int[] dr = {1, -1, 0, 0};
int[] dc = {0, 0, 1, -1};
// BFS를 위한 큐와 방문 배열
Queue<int[]> queue = new LinkedList<>();
boolean[][] visited = new boolean[n][m];
// 시작 위치 (1, 1)에서 BFS 시작
queue.add(new int[]{0, 0});
visited[0][0] = true;
maps[0][0] = 1; // 시작 위치도 포함되도록 1로 설정
// BFS 탐색
while (!queue.isEmpty()) {
int[] current = queue.poll();
int r = current[0];
int c = current[1];
// 목표 지점에 도달하면 경로 길이 반환
if (r == n - 1 && c == m - 1) {
return maps[r][c];
}
// 4 방향 탐색
for (int i = 0; i < 4; i++) {
int nr = r + dr[i];
int nc = c + dc[i];
// 새로운 위치가 유효한지 확인
if (nr >= 0 && nr < n && nc >= 0 && nc < m && maps[nr][nc] == 1 && !visited[nr][nc]) {
queue.add(new int[]{nr, nc});
visited[nr][nc] = true;
maps[nr][nc] = maps[r][c] + 1; // 이동 칸 수를 기록
}
}
}
// 도달할 수 없을 경우 -1 반환
return -1;
}
}
👩💻 내일은 무엇을 학습할 것인가?
- 새벽에 일어나서 코딩하기...
- 항해99문제 풀기...