시간 복잡도 규칙 입력값 n 은 항상 0 보다 크다. 모든 상수를 제거한다. 예) 3n, 5n, 200n은 모두 n 이다. 낮은 차수의 항은 무시한다. 예) n^3+n^2+n+5 ====> n^3 log함수 일 때 밑을 무시한다. 빅 오 표기법(Big-Oh Notation) 알고리즘의 효율성을 표시하는 표기법 1. O (빅 오 복잡도) 비교 대상인 그래프가 일치 혹은 아래에 있을 때 비교 대상인 다른 알고리즘과 같거나 더 빠름. 2. o (리틀 오 복잡도) 비교 대상인 그래프가 아래에 있을 때 비교 대상인 다른 알고리즘보다 더 빠름. 3. θ (세타 복잡도) 비교 대상인 그래프가 일치할 때 비교 대상인 다른 알고리즘과 같음. 4. Ω (빅 오메가 복잡도) 비교 대상인 그래프가 일치 혹은 위에 있을 때 비..
객체란? A Java object is a member (also called an instance) of a Java class. Java 클래스의 멤버(인스턴스라고도 함) 클래스를 구체화한 것 클래스를 데이터 타입으로 메모리에 생성된 것 state(fields, 상태), behavior(methods, 행동)로 구성 클래스란? A class is the blueprint from which individual objects are created. 개별 객체가 생성되는 기반이 되는 설계도 사용자 정의 데이터 유형, 데이터 타입 객체를 생성할 때 사용 객체지향 프로그래밍(OOP, Object-Oriented Programming) 기본적으로 기능과 논리보다는 데이터 또는 객체를 중심으로 소프트웨어 설계를..
배열 만들기 배열 생성 시 배열 타입에 대한 default 값으로 초기화 배열 초기값 자료형 초기값 int 0 double 0.0 char '0' boolean false String null 사용자 정의 class null 생성과 동시에 값 할당하기 int[] b = new int[] {1, 3, 5}; // new int[] 는 생략 가능 int[] b = {1, 3, 5}; 주의 사항 선언과 생성을 따로 하는 경우 초기화할 때 꼭 'new T[ ]'를 같이 적어줘야 한다. // X int[] a; a = {1, 3, 5}; // 컴파일오류, Array constants can only be used in initializers 이 에러 문구 나옴. // O int[] a; a = new int[]{..
연산자 우선 순위 ✔️ 연산자 우선순위가 같을 경우 연산 진행 방향(결합방향)에 의해 결정 3 * 4 * 5 1️⃣ 3 * 4 2️⃣ 12 * 5 x = y = 3 1️⃣ y = 3 2️⃣ x = 3 연산 예시 // 1 - Type mismatch byte a = 10; byte b = 20; byte c = a + b; // Type mismatch 에러 발생 // 산술 연산의 최소 단위는 int이기 때문에 'a+b'는 내부적으로 int타입으로 바껴있음. // byte c = (byte) (a + b); 이런 식으로 바꾸든가 해야 함. // 2 - Type mismatch int a = 10; long b = 20; int c = a + b; // Type mismatch 에러 발생, 더 큰 타입이 있..
변수 자료를 저장하기 위한 메모리 공간 타입에 따라 크기가 달라짐 메모리 공간에 값을 할당 후 사용 타입 ✔️ 기본형(primitive type) 미리 정해진 크기의 memory size로 표현 변수 자체에 값 저장 모든 값 타입은 메모리의 스택(stack)에 저장 ex) int, double, char 등 ✔️ 참조형(reference type) 크기가 미리 정해질 수 없는 데이터의 표현 변수에는 실제 값을 참조할 수 있는 주소만 저장 메모리의 힙(heap)에 실제 값을 저장하고, 그 참조값(주소값)을 갖는 변수는 스택에 저장 기본형(Primitive Type)의 크기 * 실수(부동 소수점)의 연산은 정확하지 않다. 유효 자릿수를 활용하여 반올림처리하기 형변환 ❓ 변수의 타입을 다른 타입으로 변환하는 ..
javadoc에서 Stack class를 찾아보면 다음과 같은 설명이 있다. A more complete and consistent set of LIFO stack operations is provided by the Deque interface and its implementations, which should be used in preference to this class. Stack을 사용하지 말아야하는 이유 1. Vector class를 상속받기 때문에 동일한 문제 발생 Vector 클래스는 주요 메서드들이 각각 동기화를 진행 동기화를 하는 과정에서 락을 얻는 과정이 있다. 단일 스레드 환경에서는 락으로 인해 속도 저하 문제가 생길 수 있다. 2. 용량 설정 불가능 ArrayDeque는 초기 Ar..
Deque이란? A linear collection that supports element insertion and removal at both ends. The name deque is short for "double ended queue" and is usually pronounced "deck" "double ended queue"의 줄임말로 앞뒤로 데이터를 넣고 뺄 수 있는 선형 자료구조 큐(FIFO, First-In-First-Out), 스택(LIFO, Last-In-First-Out) 모두 될 수 있다. Deque 인터페이스를 구현한 클래스 Deque queue = new ArrayDeque(); Deque queue = new ConcurrentLinkedDeque(); Deque queue..