[자료구조] DFS & BFS
·
CS 지식/[자료구조]
깊이우선탐색 - DFS 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 → 정점의 자식들을 먼저 탐색하는 방식 스택 자기 자신을 호출하는 순환 알고리즘의 형태를 지님 인접리스트로 표현된 그래프 : O(N+E) 인접 행렬로 표현된 그래프 : O(N^2) public class DFS { public static void main(String[] args) { HashMap graph = new HashMap(); graph.put("A", new ArrayList(Arrays.asList("B", "C"))); graph.put("B", new ArrayList(Arrays.asList("A", "D"))); graph.put("C", new ArrayList(Arrays.asList("A", "G",..
[자료구조] 와일드카드(Wildcards)
·
CS 지식/[자료구조]
와일드카드 ?의 의미는 알 수 없는 타입이고 모든 타입이 될 수 있음 제네릭 타입을 사용하고 싶지만, 들어오는 실제 타입 매개변수가 무엇인지 신경쓰고 싶지 않다면 와일드카드()를 사용함 제네릭 타입와 와일드 카드의 차이 제네릭 : 타입을 모르지만, 타입이 정해지면 그 타입의 특성에 맞게 사용함 와일드 카드 : 무슨 타입인지 모르고, 무슨 타입인지 신경쓰지 않음. 타입을 확정하지 않고 가능성을 열어둠 interface Drink{ } class Coffee implements Drink{ } class Milk implements Drink{ } public class GenericTest { private void test1(final List
[자료구조] 제네릭(generic)
·
CS 지식/[자료구조]
제네릭(generic) 데이터의 타입을 일반화한다는 것을 의미 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법 제네릭 장점 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있음 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있음 제네릭의 선언 및 생성 class MyArray { T element; void setElement(T element) { this.element = element; } T getElement() { return element; } } public void test(){ List example = new ArrayList(); method1(example); // 제네릭 타입이 일치하지 않기 때문에 컴파일 에러 발..
[자료구조] 빅오 표기법(big-O notation)
·
CS 지식/[자료구조]
알고리즘의 복잡도를 판단하는 척도는 시간 복잡도와 공간 복잡도가 있음 그 중 시간 복잡도는 알고리즘 내 연산의 횟수와 밀접한 관계가 있음 시간 복잡도 표기법 Big-O(빅 오) 표기법 알고리즘 최악의 실행 시간을 표기함 가장 많이 사용하는 표기법 최소한 보장되는 성능을 표기 Big-Ω(빅 오메가) 표기법 알고리즘 최상의 실행 시간을 표기 Big-θ(빅 세타) 표기법 알고리즘 평균 실행 시간을 표기 x축 → 자료 입력 개수, y축 → 시간 실행 속도 O(1) → O(log N) → O(N) → O(N log N) → O(N^2) → O(2^N) 빅오 표기법의 특징 상수항(영향력 없는 항) 무시 : O(N + 1) → O(N)으로 표기 계수 무시 : O(2N) → O(N)으로 표기 최고차항만 표기 : O(3..
[자료구조] 자료구조
·
CS 지식/[자료구조]
자료구조란? 프로그램에서 사용하기 위한 자료를 기억장치의 공간 내에 저장하는 방법과 저장된 그룹 내에 존재하는 자료 간의 관계, 처리 방법 등을 연구 분석하는 것 선형 구조(Linear Structure) 배열(Array) 선형 리스트(Linear List) 스택(Stack) 큐(Queue) 데크(Deque) 비선형 구조(Non-Linear Structure) 트리(Tree) 그래프(Graph) 자료구조의 활용 정렬(Sort) 검색(Search) 인덱스(Index) 배열(Array) 동일한 자료형의 데이터들이 같은 크기로 나열되어 순서를 갖고 있는 집합 정적인 자료구조 데이터 삭제 시 삭제된 공간이 빈 공간으로 남아있어 메모리의 낭비가 발생함 반복적인 데이터 처리 작업에 적합 선형 리스트(Linear L..
[자료구조] HashMap
·
CS 지식/[자료구조]
HashMap Map인터페이스에 속해있는 컬렉션 키 : 값 - 1 : 1 HashMap 선언 import java.util.HashMap; public class HashMapDemo { public static void main(String[] args) { HashMap hm = new HashMap(); // 타입 설정x Object 입력 HashMap i = new HashMap(); // Integer, Integer 타입 설정 HashMap i2 = new HashMap(i); // i의 값을 i2에 카피 HashMap i3 = new HashMap(10); // 초기용량 지정 HashMap i4 = new HashMap() {{ // 변수 선언 + 초기값 지정 put(1, 100); put(..