본문 바로가기

전체 글

(92)
[Algorithm기초] 합병 정렬, 힙 정렬, 퀵 정렬, 트리 정렬 합병 정렬 (Merge Sort) 배열을 계속 분할해서 길이가 1이 되도록 만들고 인접한 부분끼리 정렬하면서 합병 알고리즘 복잡도 : O(nlogn) 합병정렬구현 의사코드 (Pseudocode) mergeSort(A[], p, r) ▷ A[p...r]을 정렬한다{ if (p < r) then { q ← (p+q)/2; ----------------- ① ▷ p, q의 중간 지점 계산 mergeSort(A, p, q); ---------- ② ▷ 전반부 정렬 mergeSort(A, q+1, r); -------- ③ ▷ 후반부 정렬 merge(A, p, q, r);------------ ④ ▷ 합병 } } merge(A[], p, q, r){ 정렬되어 있는 두 배열 A[p...q]와 A[q+1...r]을 ..
[Data Structure기초] Queue Queue(큐) - 줄을 지어 순서대로 처리되는 자료구조 - 먼저 들어온 데이터가 가장 먼저 나감 (First In First Out , 선입선출) - 마트의 재고관리 부터 운영체제의 프로세스 관리, 너비 우선 탐색(BFS) , 캐시 메모리, 버퍼 등에서 사용됨 Stack 시간복잡도 삽입( enqueue ) : O(1) 삭제( dequeue ) : O(1) 연산 enqueue(Object data) 데이터를 넣는 함수 ( add(data), offer(data) ) dequeue() 데이터를 꺼내는 함수( remove(), poll() ) peek() 요소를 읽어옴, 비어있으면 null isEmpty() 큐가 비어있는지 확인 isFull() 큐가 꽉 차있는지 확인 element() 큐가 비었을 때 요소를..
[Java연습] 스택 두 개의 문자열 비교 import java.util.Stack; //20240220 두 문자열 비교 // - 단 #은 백스페이스로 바로 이전의 문자를 삭제한다고 가정 public class stackPractice05 { public static boolean stringCompare(String s1, String s2){ String s1After = doBackSpace(s1); String s2After = doBackSpace(s2); return s1After.equals(s2After); } public static String doBackSpace(String s){ Stack stack = new Stack(); for (char c : s.toCharArray()) { if(c == '#' && !stack..