본문 바로가기

[백엔드TIL] IOC 와 DI 개념 IoC (Invesion of Control) 1. '제어' 와 '역전' 의 의미 제어: 어떠한 클래스 내부에서 다른 객체를 생성하고 이용할 때, 직접 코드를 생성하여 '제어' 한다고 한다. 역전: 객체를 클래스 내부에서 직접 생성하고 제어하는 것이 아니라, 외부에서부터 인자로 받아 초기화 하는 것 2. IoC (제어의 역전) 가 필요한 이유 영상에서 서브웨이를 예시로 이해하기 편하게 설명해주었다. 서브웨이에서 샌드위치를 주문한다고 하자. IoC 가 적용되지 않은 경우: 클래스 내부에서 다른 객체를 제어하고, 외부에서 인자를 받지 않기 때문에, 커스텀 없는 기본 레시피의 샌드위치라고 생각할 수 있다. IoC 가 적용된 경우: 외부에서 인자를 받아 객체를 생성하고 초기화하므로 샌드위치의 속 재료를 커스텀 .. 더보기
[백엔드TIL] BFS 너비 우선 탐색(JAVA) BFS 너비 우선 탐색(Breadth First Search) "꼼꼼하게 좌우를 살피며 다니자"와 같이 시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 알고리즘이다. 시작 정점을 지나고 나면 깊이가 1인 모든 정점을 방문하고, 그다음에는 깊이가 2인 모든 정점을 방문한다. 이런 식으로 한 단계씩 깊이를 더해가며 해당 깊이에 있는 모든 정점들을 방문해 나가다가 나중에는 더 이상 방문할 곳이 없을 때 탐색을 종료한다. * 루트 노드(혹은 다른 임의의 노드)에서 시작해서 인접한 노드를 먼저 탐색하는 방법 * 사용하는 경우: 두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 이 방법을 선택한다. BFS의 특징 BFS는 시작 정점으로부터 거리가 가까운 정점의 순서.. 더보기
[백엔드TIL] DFS와 BFS란? 작동 방식과 구현 방법 이 글은 DFS와 BFS 개념에 대해 설명하고, 작동 방식을 그림으로 보여주며, 이러한 작동 방식을 자바 소스 코드로 구현합니다. 학습 목표 ㆍDFS ㆍBFS ㆍ정리 DFS · DFS(Depth-First Search)는 깊이 우선 탐색이라고 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 알고리즘 동작 방식 · 스택 자료구조를 이용한다. 1. 탐색 시작 노드를 스택에 삽입하고, 방문 처리한다. 2. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리하고, 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다. 3. 위의 1번과 2번 과정을 더 이상 수행할 수 없을 때까지 반복한다. * ‘방문 처리': 스택에 한 번 삽입되어 처리된 노드가.. 더보기