Algorithm
Java-자료구조 (시간 복잡도)
알고리즘 성능 표기법 Big O (빅-오) 표기법: O(N) 알고리즘 최악의 실행 시간을 표기 가장 많이/일반적으로 사용함 아무리 최악의 상황이라도, 이정도의 성능은 보장한다는 의미이기 때문 Ω (오메가) 표기법: Ω(N) 오메가 표기법은 알고리즘 최상의 실행 시간을 표기 Θ (세타) 표기법: Θ(N) 세타 표기법은 알고리즘 평균 실행 시간을 표기 시간 복잡도 계산은 반복문이 핵심 요소임을 인지하고, 계산 표기는 최상, 평균, 최악 중, 최악의 시간인 Big-O표기법을 중심으로 익히면 됨 3. 대문자 O 표기법 빅 오 표기법, Big-O 표기법 이라고도 부름 O(입력) 입력 n 에 따라 결정되는 시간 복잡도 함수 O(1), O(log n), O(n), O(nlog n), O(n^2), O(2^n), O..
Java-자료구조 (Linked-List)
1. 링크드 리스트 (Linked List) 구조 연결 리스트라고도 함 배열은 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조 링크드 리스트는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 링크드 리스트 기본 구조와 용어 노드(Node): 데이터 저장 단위(데이터 값, 포인터)로 구성 포인터(pointer): 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 2. 간단한 링크드 리스트 예 최대한 간단한 형태로 코드를 작성해보며 링크드 리스트를 이해해보기 2-1. Node 클래스 구현 // src/com.company/Node.java package com.company; // Node 클래스 구현 public class Node { private ..
Java-자료구조 (Stack)
STACK 데이터를 제한적으로 접근할 수 있는 구조 큐 : FIFO정책 스택 : LIFO정책 대표적인 스택의 활용 컴퓨터 내부의 프로세스 구조의 함수 동작방식 주요 기능 push(): 데이터를 스택에 넣기 pop() : 데이터를 스택에서 장점 구조가 단순하다 데이터 저장/읽기 속도가 빠르다 단점 (일반적인 스택 구현시) 데이터 최대 갯수를 미리 정해야 한다. 미리 최대 갯수만큼 공간을 확보해야 한다. 스택은 단순하고 빠른 성능을 위해 사용되므로, 보통 배열 구조를 활용해서 구현하는 것이 일반적임. 이 경우, 위에서 열거한 단점이 있을 수 있음 // java.util.Stack클래스 임포트 import java.util.Stack; Stack stack_int = new Stack(); stack_int...
Java-자료구조 (Queue)
우선 큐에 대해 학습하기 전에 자바의 클래스와 친숙해 지고자 중첩 클래스에 대해 알아보겠다 1. 중첩 클래스는 왜 쓰는가? 클래스들의 논리적인 그룹을 나타낼 때 쓴다. 주로 model 객체에서 상위모델과 하위모델이 있을 떄 쓰는거 같다. (Static Nested Class를 많이 씀) 향상된 캡슐화 좋은 가독성과 유지 보수성 2. 중첩 클래스의 종류 3. 내부 클래스 (Inner Class) 내부클래스로서 일반클래스 내부에 생성된다. Non-Static Nested Class라고도 불린다. 밖에 있는 클래스는 내부클래스를 멤버변수처럼 사용할 수 있다. 사용하려면 new로 인스턴스를 만들어야 한다. 내부클래스는 자신의 밖에 있는 클래스의 자원을 직접 사용할 수 있다. 모양새 // src$Outer.jav..