전체 글 썸네일형 리스트형 [자료구조와 함께 배우는 알고리즘 입문] 4. 스택과 큐 스택, 큐는 이전에 간단하게 정리해둔 필기가 있어서 기본적인 건 그걸로 대체하고 추가로 내가 모르는 부분만 작성하기루 절대 귀찮은거 아님!!!!!!! 1. 스택 2. 큐 2-1. 배열로 큐 만들기 2-2. 링 버퍼로 큐 만들기 배열 요소를 앞쪽으로 옮기지 않는 큐를 구현하기 위해 사용하는 자료구조가 링버퍼이다. 약간 초등학생때 짜던 방학 계획표처럼 동그라미 안에서 첫 값과 마지막 값이 연결되어있는 구조라고 생각하면 된다. 맨 첫값과 끝 값을 논리적으로 구분하기 위해 사용하는 것이 프론트, 리어이다. 링 버퍼를 통한 큐의 인큐, 디큐는 시간복잡도 O(1)이 된다. 링버퍼를 사용해 큐를 구현하면 아래와 같이 구현할 수 있다. public class IntQueue { private int[] queue; /.. 더보기 [자료구조와 함께 배우는 알고리즘 입문] 3. 검색 알고리즘(2) 3. 이진 검색 3-1. 이진 검색 알아보기 이진검색은 배열이 오름차순이나 내림차순으로 정렬되어있을 때 데이터를 찾기 위해 사용하는 알고리즘이다. 배열이 오름차순으로 정렬되어있는 경우에는 다음과 같이 데이터를 찾으면 된다. 1) 배열의 중앙값과 찾고자 하는 데이터 비교 2) 중앙값보다 데이터가 작으면 중앙값 이전 부분에서 검색 수행 3) 중앙값보다 데이터가 크면 중앙값 이후 부분에서 검색 수행 배열이 내림차순일 경우에는 중앙값과 비교하는 부분은 동일하게 수행하고, 남은 두 단계는 반대로 수행해주면 된다. 기존 검색 알고리즘보다 검색 수행 속도가 절반으로 줄기 때문에 시간복잡도는 O(logN)이 된다. 오름차순으로 정렬된 배열을 이진검색하는 코드를 작성하면 아래와 같다. static int binSearc.. 더보기 [자료구조와 함께 배우는 알고리즘 입문] 3. 검색 알고리즘(1) 1. 검색 알고리즘이란? 1-1. 검색과 키 살펴보기 - 키값을 지정하는 방법 1. 키값과 일치하도록 지정 2. 키값의 구간을 지정 3. 키값과 비슷하도록 지정 4. 조건은 N개 이상으로 지정 가능 1-2 배열에서 검색하기 배열 내에서 찾고자 하는 데이터를 검색한다. 관련 알고리즘은 아래와 같다. 1. 선형 검색 : 무작위로 늘어있는 배열에서 검색 2. 이진 검색 : 일정한 규칙으로 늘어있는 배열에서 빠르게 검색 수행 3. 해시법 : 추가, 삭제가 자주 일어나는 배열에서 빠르게 검색/ 수행 2. 선형 검색 2-1. 선형 검색 알아보기 위에서 말한 것 처럼 선형검색은 무작위로 늘어있는 배열에서 찾고자 하는 데이터를 검색하는 것이다. 좀 더 이해하기 쉽게 표현하면 아래와 같다. 요걸 코드로 표현하면 아래와 .. 더보기 [자료구조와 함께 배우는 알고리즘 입문] 1. 기본 알고리즘 1. 알고리즘이란? 1-1 세 값의 최댓값 구하기 public class Max3 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); int max = a; if(max 더보기 [혼자 공부하는 자바] 9-2 익명 객체 1. 익명 객체 이름이 없는 객체 어떤 클래스를 상속하거나 인터페이스클 구현해야만 만들 수 있음. 일반적으로 명시적으로 클래스 이름을 주고 선언함 선언 방법 부모클래스 변수 = new 부모클래스(){} 인터페이스 변수 = new 인터페이스(){} 부모 클래스 변수는 이름 없는 자식 객체를 참조하고 인터페이스 볏누은 이름 없는 구현 객체를 참조함 2. 익명 자식 객체 생성 자식 클래스가 재사용되지 않고 특정 위치에서 사용할 경우 익명 자식 객체를 생성해 사용하는 것이 편리 생성 방법 부모클래스 [필드/변수] = new 부모클래스(){ } 중괄호 내부에 필드나 메소드 선언하거나 오버라이딩 하는 내용을 작성 생성자를 선언할 수 없음 익명 자식 객체에서 정의된 필드와 메소드는 익명 자식 객체 내부에서만 사용됨 .. 더보기 [혼자 공부하는 자바] 9-1 중첩 클래스와 중첩 인터페이스 소개 1. 중첩클래스 클래스 내부에 선언되는 위치에 따라 분류 멤버 클래스 클래스의 멤버로서 선언되는 중첩 클래스 인스턴스 멤버 클래스와 정적 멤버 클래스로 나뉨 클래스나 객체 사용 중이라면 언제든 재사용 가능 로컬 클래스 메소드 내부에서 선언되는 중첩 클래스 메소드를 실행할 때만 사용됨 인스턴스 멤버 클래스 static 키워드 없이 중첩 선언된 클래스. 인스턴스 필드와 메소드만 선언 가능 외부에서 객체 생성하려면 외부클래스 객체 먼저 생성하고 내부클래스 객체 생성해야 함 class A{ class B{//인스턴스 멤버 클래스 B(){} int x; void do(){} } } 정적 멤버 클래스 "static" 키워드로 선언된 클래스. 모든 종류의 필드와 메소드 선언 가능 외부에서 객체 생성하기 위해 외부 객.. 더보기 [혼자 공부하는 자바] 5-1 참조 타입과 참조 변수 1. 기본 타입과 참조 타입 ▶기본타입 byte, char, short, int long, float, double, boolean변수 실제 값을 변수 안에 저장 ▶참조타입 배열, 열거, 클래스, 인터페이스 변수로 메모리의 번지를 변수 안에 저장함 번지를 통해 객체를 '참조한다' 따라서 참조타입 cf) String(문자열) 클래스도 번지를 통해 객체를 참조하기 떄문에 참조타입 변수에 해당 2. 메모리 사용영역 ▶ 메소드(Method) 영역 JVM시작 시 생성되고 모든 스레드가 공유하는 영역 사용되는 클래스들을 클래스 코더로 읽어 클래스별로 정적필드 / 상수 / 메소드 코드 / 생성자 코드 등을 분류해서 저장 ▶ 힙(Heap) 영역 객체와 배열이 생성되는 영역 생성된 객체와 배열은 JVM스택 영역의 변수나.. 더보기 이전 1 ··· 13 14 15 16 다음