[백준 - 2178/ 자바(Java)] 미로 탐색 문제 BFS로 해결하기
·
문제 풀이/백준 문제풀이
BFS에 대한 개념을 먼저 공부해야 한다면 아래 포스팅을 먼저 보고 문제를 푸시는 걸 권장합니다. https://sunro1994.tistory.com/181 [백준 -24480 ] java , 알고리즘 수업 - 깊이 우선 탐색 2 문제를 풀기 전 그래프 및 DFS 개념이 부족하다면 아래 포스팅을 먼저 읽어주세요! https://sunro1994.tistory.com/179 [자료구조 - Graph 와 DFS] Graph와 DFS란? [Algorithm] 깊이 우선 탐색 목차 1. DFS란? 2. 그래프 sunro1994.tistory.com 이번 문제입니다! https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)..
[Java- Algorithm] 너비 우선 탐색법(BFS과 큐(Queue)
·
JAVA-기초/JAVA기본
너비 우선 탐색법(BFS)이란? File:Breadth-First-Search-Algorithm.gif - Wikimedia Commons No higher resolution available. commons.wikimedia.org 위의 GIF는 BFS이고 아래는 DFS이다. 차이점을 먼저 확인해보자. ✅공통점 방문 여부 확인을 통해 한 번 지나간 노드는 다시 방문하지 않는다. ✅차이점 DFS는 정점(1)에서 연결된 노드를 순서대로 아래로 내려가며 다음 노드가 없는 경우 다음 연결된 노드로 이동하며 탐색한다. 또한 재귀호출 및 스택방식으로 코드를 구현한다. BFS는 같은 레벨(가장 가까운 노드)에서 검색을 시작하며 최단 거리를 탐색한다. 큐 방식으로 코드를 구현한다. 배열에서 사용하는 경우 방향 데이..
[백준 -24480 ] java , 알고리즘 수업 - 깊이 우선 탐색 2
·
문제 풀이/백준 문제풀이
문제를 풀기 전 그래프 및 DFS 개념이 부족하다면 아래 포스팅을 먼저 읽어주세요! https://sunro1994.tistory.com/179 [자료구조 - Graph 와 DFS] Graph와 DFS란? [Algorithm] 깊이 우선 탐색 목차 1. DFS란? 2. 그래프란? 그래프의 특징 그래프의 종류 그래프 용어 1. DFS란? 깊이 우선 탐색(Depth-First-search)은 그래프 완전 탐색 기법중 하나 그래프의 시작 노드에서 sunro1994.tistory.com 문제해결중 놓친 중요한 부분 - 내림차순! Do it 알고리즘 자바편을 통해 DFS를 공부하고 해당 코드를 변경해서 이 문제를 풀려고 했다. 책에서 제공했던 백준 문제는 아래의 문제였다. https://www.acmicpc.ne..
[Java - Spring Security6] Spring Security를 사용하는 이유 및 아키텍처
·
Spring/Security6
보안이 왜 중요한가? 데이터 손실 또는 비즈니스 로직 손실을 초래할 수 있음 이러한 손실은 법적 처벌까지 따라갈 수 있다. 대부분의 공격에 대해 회피하고 정보를 보호하기 위함 환경 구성 Java 17, Spring Web, devtools, Spring Security Spring security 의존성을 추가하게되면 어떠한 요청에도 응답하지 않고 자격증명을 요구한다. 아무것도 설정하지 않은 Security 프로젝트 첫 인증후에는 곧바로 들어갈 수 있다. 재시작할때마다 새로운 빔리번호를 받고 가장 낮은 cvrt어플리케이션에서는 작동하지 않을 수 있다. 저장 시스템에 자격증명을 저장하고나 자격증명을 요구하는 것 properties 설정 비생산 애플리케이션, 내부 애플리케이션 , 작은 poc어플리케이션을 만..
[자료구조 - Graph 와 DFS] Graph와 DFS란?
·
JAVA-기초/JAVA기본
[Algorithm] 깊이 우선 탐색 목차 1. DFS란? 2. 그래프란? 그래프의 특징 그래프의 종류 그래프 용어 1. DFS란? 깊이 우선 탐색(Depth-First-search)은 그래프 완전 탐색 기법중 하나 그래프의 시작 노드에서 출발하여 탐색할 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 분기 쪽으로 이동하여 탐색을 수행하는 알고리즘 트리의 완전 탐색에 사용된다. 깊이 우선탐색 특징 기능 특징 시간 복잡도 (노드 -V, 엣지 - E) 그래프 완전 탐색 - 재귀 함수로 구현 - 스택 자료구조 이용 O(V+E) DFS는 사실상 재귀함수문제와 다름없다. 재귀 함수를 이용하므로 스택오버플로에 유의해야 한다. DFS를 이용하여 풀 수 있는 문제는 단절점 찾기, 단절선 찾기, 사이클 찾기, 위상..
[백준 11724 - 연결 요소의 개수] DFS를 활용한 문제 풀기
·
문제 풀이/백준 문제풀이
위 문제는 DFS풀이의 가장 기본적인 문제이다. 문제를 풀기에 앞서 풀이 순서를 짚어보자. 1. 최대 정점의 개수와 문제풀이 시간을 대조해본다. - 문제 풀이 시간은 3초이다. 최대 노드의 개수는 1000개로 n^2의 복잡도로 문제를 풀어도 충분히 시간이 남는다. 2. 해당 그래프를 직접 그려본다. - 첫 예시의 그래프를 만들어보자면 다음과 같다. (혼을 담아 정성스럽게 그려보았다) 3. 이처럼 두개의 그래프가 그려지는것을 확인할 수 있다. 이를 코드로 작성하기 위한 슈도코드를 작성해본다. n(노드 개수) , m(엣지 개수) A(그래프 데이터 저장 인접 리스트) visited(방문 기록 저장 배열) for(n만큼 반복 {A 인접 리스트의 각 ArrayList초기화} for(m의 개수만큼 반복하기) { A..