멋사 부트캠프
-
01. 의존성 주입 (DI)멋사 부트캠프/SpringFramework 2025. 5. 16. 13:25
1. 의존성 주입 방식 1) 에너테이션 방식Spring은 MVC 아키텍처를 따르며, @Autowired와 같은 애너테이션을 통해 의존성 주입을 수행한다.각각의 애너테이션(아래 예시)을 Spring 컨테이너 (= ApplicationContext)가 관리한다.@Controllerpublic class PersonController { private PersonService service; private PersonConsoleView view; private Scanner sc = new Scanner(System.in); @Autowired public PersonController(PersonService service, PersonConsoleView view) { this.service ..
-
07. 그래프(Graph)멋사 부트캠프/자료구조 2025. 5. 15. 11:33
1. 그래프란?규칙 정리)1) 2개 이상의 경로가 가능하다.2) 노드들 사이에 무방향/방향에서 양방향 경로를 가질 수 있다.3) 루트 노드라는 개념이 없다. (= 루트노드는 트리)4) 순회는 DFS나 BFS로 이루어진다.5) 그래프는 순환(Cyclic) 혹은 비순환(Acyclic)이다.6) 그래프는 크게 방향 그래프와 무방향 그래프가 있다. 2. 용어 정리1) 정점(Vertex) - 노드(node) 라고도 하며 정점에는 데이터가 저장된다. (0, 1, 2, 3) 2) 간선(Edge) - 정점(노드)를 연결하는 선으로 link, branch 라고도 부른다. * 간선의 종류📍 무방향 간선방향 없음. A-B면 B-A도 가능친구 관계➡️ 방향 간선방향 있음. A → B만 가능팔로우 관계🧮 가중..
-
04. 넓이 우선 탐색 (BFS)멋사 부트캠프/알고리즘 2025. 5. 15. 11:18
1. 알고리즘 정의 Breadth-First Search 그래프나 트리에서 Root 노드부터 출발하여인접한 노드들을 먼저 탐색하고, 그 다음 단계의 노드들을 탐색해 나가는 방식최단거리 문제에 특히 적합, 주로 Queue를 활용하여 구현함. [구조]A ├── B │ └── D └── CBFS 탐색 순서 (시작: A)→ A → B → C → D 2.알고리즘 구현import java.util.*;public class BFSExample { static List[] graph; static boolean[] visited; public static void bfs(int start) { Queue queue = new LinkedList(); visited[sta..
-
03. 깊이 우선 탐색(DFS)멋사 부트캠프/알고리즘 2025. 5. 15. 11:11
1. 알고리즘 정의Depth-First Search한 방향으로 최대한 깊게 탐색한 뒤, 더 이상 갈 곳이 없으면 백트래킹하면서 다른 경로를 탐색하는 알고리즘이야. [구조]A├── B│ └── D└── CBFS 탐색 순서 (시작: A)→ A → B → D (재귀:백트래킹) → C 2. 알고리즘 구현1) 재귀함수 활용void dfs(int node, boolean[] visited) { visited[node] = true; System.out.print(node + " "); for (int next : graph[node]) { if (!visited[next]) { dfs(next, visited); } }} 2) Stack ..
-
05. 큐(Queue)멋사 부트캠프/자료구조 2025. 5. 15. 09:15
1. 큐 구조 선입선출(FIFO)처음에 들어온 것이 먼저 나가는 구조이다. 주로 우선순위대로 처리해주는 네트워크 패킷 처리, 이벤트 실시간 처리에 활용된다. 2. 큐의 구현enqueue(item)큐에 아이템을 뒤에 추가dequeue()큐에서 아이템을 앞에서 제거하고 반환peek()큐의 맨 앞 데이터를 확인 (삭제 X)isEmpty()큐가 비어 있는지 확인size()큐의 길이 확인enqueue → [ A, B, C ] → dequeue → [ B, C ]import java.util.Queue;import java.util.LinkedList;public class QueueWithJava { public static void main(String[] args) { Queue q = new Linked..
-
01. 이분탐색 (Binary Search)멋사 부트캠프/알고리즘 2025. 5. 10. 14:26
1. 이진탐색 정의 총 배열길이의 중앙 인덱스 그 다음 남은 길이의 중앙 인덱스를 기준으로 원하는 데이터를 탐색한다. 순차 탐색보다 연산량이 줄어든다.2. 이분탐색 코드 원형import java.util.Arrays;public class Basic_Bs { public static void main(String[] args) { int[] irr = new int[]{1, 2, 8, 3, 5, 19, 10}; Arrays.sort(irr); System.out.println(binary_search(irr, 12, 0, irr.length-1)); } public static int binary_search(int[] array, int target, int start, ..
-
04. Stack멋사 부트캠프/자료구조 2025. 5. 4. 14:07
1. Stack 이란? 2. Stack의 활용(with Java) * isEmpty() : 배열이 비어 있는지 확인 (top == -1 인지 조건검사) * isFull() : 배열이 꽉차 있는지 확인 (top == length-1 인지 조건검사) * peek() : 현재 위치(맨위)의 데이터를 조회만 함. * pop() : 현재 위치(맨위)의 데이터를 조회한 후 리턴하고 삭제하며, top을 한칸 내린다. * push() : 현재 스택이 꽉차 있는지 검사한 후, 아니라면 top을 한칸 올리고 해당 내용을 추가한다.import java.util.Stack;public class StackWithJava { public static void main(String[] args) {..
-
02. 탐욕 알고리즘(Greedy)멋사 부트캠프/알고리즘 2025. 4. 23. 12:09
1. 정의 현재 위치에서 최적의 해를 찾는 알고리즘. 즉, 현재 위치의 최선이 전체의 최선이라는 전제를 기반으로 한다. 2. 활용 제약조건 현재 위치에서의 선택이 전체에 미치는 영향이 제한적이어야 하며, 그 영향이 국소적인 범위 안에서 해결 가능해야 한다.3. 사용 예시체육복 문제 (±1 범위 내 대여)회의실 배정 (가장 빨리 끝나는 회의 선택)동전 거스름돈 (가장 큰 단위부터 사용)다익스트라 알고리즘 (가장 가까운 정점부터 탐색)Kruskal, Prim (최소 비용 간선 선택) 실 사용 예시 = > 네비게이션, 라우팅 알고리즘(OSPF)등... 4. 이해하기 쉽게 설명 - 어렸을 적 오락실에서 게임을 떠올려 보자. 마지막에 랭킹 등록할 때, "AAA" 초기화가 ..