본문 바로가기

분류 전체보기45

[알고리즘] [3] BFS 1. 그래프 탐색 그래프는 노드 (Node)와 간선 (Edge)으로 이루어진 자료구조이다. 그래프 탐색은 그래프에서 특정 조건을 만족하는 노드를 찾거나, 모든 노드를 방문하는 데 사용한다. BFS와 DFS는 가장 일반적인 그래프 탐색 알고리즘이다. 2. BFS (Breadth First Search) 다차원 배열에서 각 칸을 방문할 때 너비를 우선으로 방문하는 알고리즘 특정 노드에서 인접한 노드를 모두 방문한 다음, 다음 레벨의 인접 노드로 이동하는 방법 자료구조 큐(Queue)를 사용하여 구현한다. BFS는 재귀적으로 작동하지 않는다. BFS는 어떤 노드의 방문 여부를 반드시 검사해야 한다. DFS는 무한한 길이를 가지는 경로에 도달했을 시 탐색 목표가 현재 경로에 있지 않다면 무한 루프에 빠질 수 있.. 2024. 1. 18.
[BOJ] [JAVA] 4779번 칸토어 집합 4779번: 칸토어 집합 칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만든다. 전체 집합이 유한이라고 가정하고, www.acmicpc.net 재귀로 푸는 문제이다. 입력이 끝나는 위치가 없어서 BufferedReader를 통해 입력을 받아야 한다. 처음 알았다! String s; while ((s = br.readLine()) != null) { 길이가 3^n인 char 배열을 만들고 '-'로 채워 넣는다. 다음으로 kanto 메서드를 만들었다. kanto는 start(시작 지점)과 초기 length를 지정해준다. 가장 처음에는 시작 지점이 index = 0, length = 3 ^ n이다. 이후 l.. 2024. 1. 14.
[BOJ] [JAVA] 24060번 알고리즘 수업 - 병합 정렬 1 24060번: 알고리즘 수업 - 병합 정렬 1 첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 500,000), 저장 횟수 K(1 ≤ K ≤ 108)가 주어진다. 다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109) www.acmicpc.net 세시간은 걸린거같다,,, 후,,, 병합 정렬 개념은 나중에 다시 적어야겠다. 여기서는 이 문제 코드만 적어야징 import java.util.*; public class Main { static int[] A; static int[] tmp; static int cnt = 0; static int m; static int result = -1; public static void main(String[] args) {.. 2024. 1. 14.
[알고리즘] [2] 병합 정렬 import java.util.*; public class Main { static int[] arr; static int [] sortedArr; static int m; static int cnt = 0; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); m = sc.nextInt(); arr = new int[n]; sortedArr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); sortedArr[i] = arr[i]; } mergeSort(0, arr.length - 1); System.out.pr.. 2024. 1. 14.