dfs 5

백준 14567번 선수과목

첫 출에 정점 수n과 간선수 m이 주어진다.그 아래 m개의 줄에 정점 시작 a와 끝 b가 주어지는데 b과목을 이수하기 전에 a과목을 먼저 들어야한다.예제 입력 2번을 예로 들자면,첫 번째 줄에 6개의 과목 수(정점 수)와 4개의 간선 쌍이 주어진다.아래는 입력값에 따라 1번부터 6번 과목까지 들어야하는 과목 수를 연결하고 소요되는 학기를 정리해봤다. 먼저 해당 문제는 유향 그래프로 a과목에서 b과목으로 이어진다.1번 과목을 듣기 위해서 1, 총 1개의 과목, 학기 필요. 과목을 듣기 위해서 1 > 2, 총 2개의 과목, 학기 필요. br>과목을 듣기 위해서 1 > 3, 총 2개의 과목, 학기 필요 과목을 듣기 위해서 4, 총 1개의 과목, 학기 필요 -> 4번 과목으로 이어진 다른 과목이 없기에 ..

자바 알고리즘 2025.09.18

백준 1260번 DFS와 BFS

먼저, BFS와 DFS에대한 개념을 트리 형식으로 그려보기만 하다보니 직접 코드로 어떻게 작성해야할지 헷갈리는 부분이 많았다. 이 문제는 두 가지 방법을 모두 적용해보면서 기초를 다질 수 있어서 개인적으로 좋은 문제라고 생각한다. 문제:정점 개수 N, 간선 개수 M, 탐색을 시작할 정점 번호 V 3개의 입력값과 각 간선을 연결하는 두 정점의 번호가 M개 만큼 주어졌을 때, DFS와 BFS가 차례대로 수행된 결과를 반환하는 문제이다. import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.LinkedList;import jav..

자바 알고리즘 2025.09.03

[leetcode - Java / DFS] 133. Clone Graph

1. 문제 - 이웃 노드가 담긴 리스트, 그래프의 전체 복사본을 반환 2. 의사코드 1. 복사본을 저장하기 위한 Hash private HashMap map = new HashMap(); 2. 현재 노드 복사본 생성 Node newNode = new Node(node.val, new ArrayList()); 3. map에 현재 노드와 복사본 저장 map.put(node, newNode); 4. 반복문으로 복사본에 채우기 3. 시도 class Solution { private HashMap map = new HashMap(); public Node cloneGraph(Node node) { // 현재 노드가 null이거나 복사본에 현재 노드가 없을 때 if (node == null) { return nul..

자바 알고리즘 2023.09.15

[leetcode - BST / Java] 230. Kth Smallest Element in a BST

1. 문제 - 이진 검색 트리에서 k번째로 작은 값을 구해라 2. 의사코드 이번 문제도 이전에 풀었던 leetcode 530번 문제와 비슷했다. 재귀를 이용해 노드를 정렬하고 k번째 노드의 값을 출력하면 될 것 같았다. 530번 문제의 내용은 링크에서 https://rhdqors.tistory.com/107 확인 가능하다. 1. 변수 설정 (재귀, 정렬된 값 저장) Integer data = null; ArrayList lists = new ArrayList(); // 우선 List를 이용해 정렬된 값을 저장시켜 본다 2. 재귀함수, 값 정렬 public void 재귀(TreeNode node) { 재귀(node.left); // 왼쪽 하위 트리 탐색 data = node.val; // 각 노드의 값 l..

자바 알고리즘 2023.09.08

[leetcode - BST / Java] 530. Minimum Absolute Difference in BST

1. 문제 - 주어진 노드에서 Binary Search Tree를 사용하여 최솟값을 찾아라 2. 의사코드 Binary Search Tree에서 많이 사용하는 방법에는 크게 BFS, DFS 두 가지가 있다. BFS(Breadth-First Search) - 너비 우선 탐색 트리의 레벨별로 노드를 탐색하며 일반적으로 큐를 사용하여 구현한다. DFS(Depth-First Search) - 깊이 우선 탐색 In-Order Traversal (중위 순회): 왼쪽 하위 트리를 먼저 탐색하고 -> 현재노드 -> 오른쪽 하위 트리 순서로 탐색하며 오름차순 정렬이다. Pre-Order Traversal (전위 순회): 현재 노드 -> 왼쪽 하위 트리 -> 오른쪽 하위 트리를 탐색한다. Post-Order Traversa..

자바 알고리즘 2023.09.07