슬기로운슬기
[프로그래머스][Lv2] 거리두기 확인하기
study/코딩테스트 2023. 12. 21. 10:31

정답 코드 public class Solution { // 이동 방향을 나타내는 배열 private static final int dx[] = {0, -1, 1, 0}; //상, 좌, 우, 하 private static final int dy[] = {-1, 0, 0, 1}; // 자리 옆에 다른 응시자가 있는지 확인하는 메서드 (빈테이블인 경우) private boolean isNextToVolunteer(char[][] room, int x, int y, int exclude) { for (int d = 0; d < 4; d++) { // 해당 방향이 제외된 방향이면 건너뛰기 if (d == exclude) continue; // 새로운 좌표 계산 int nx = x + dx[d]; int ny = ..

article thumbnail
[알고리즘] DFS(깊이우선탐색)와 BFS(너비우선탐색)
study/코딩테스트 2023. 12. 20. 20:21

그래프를 탐색하는 방법에는 크게 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)이 있다. 그래프란? 정점(node)과 그 정점을 연결하는 간선(edge)으로 이루어진 자료구조의 일종 그래프를 탐색한다는 것은 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한 번씩 방문하는 것 DFS(깊이 우선 탐색) 시작점에서 한 갈래로 더 이상 갈 수 없을 때까지 탐색하고, 더 갈 곳이 없다면 이전의 경로로 되돌아간다. 가장 직관적이고 구현하기 쉬운 탐색 방법 현재 정점과 연결된 정점들을 하나씩 갈 수 있는지 검사하고, 특정 정점으로 갈 수 있다면 그 정점에 가서 같은 행위를 반복 같은 정점을 다시 방문하지 않도록 정점에 방문했다는 것을 표시 스택이나 재귀함수를 통해 구현 DFS의 구현 - 재귀함수 // 각 노..

반응형