[Java] String, StringBuilder, 메서드 체이닝
·
Java
Stringjava에서 String을 만드는 방법에 대해 살펴보자. package stringBuilder;public class StringEx1 { public static void main(String[] args) { String str1 = "스트링1"; //스트링 생성 1 String str2 = new String("스트링2"); System.out.println("str1 = " + str1); System.out.println("str2 = " + str2); }} new String(); 으로 스트링을 생성한 것을 보면 String은 클래스라는 것을 확인할 수 있다. 그러면 str1은 객체가 아닐까? str1의 생성과..
[Data Structure] Doubly Linked List 양방향 연결 리스트
·
Algorithm&Data Structure
✅바로 가기 Doubly Linked List 서론 리스트 인터페이스 노드 클래스 리스트 생성자와 필드, 내부 클래스 search(int index) add() remove() isEmpty(), isFull(), get(int index), set(int index, E element) indexOf(E element), contains(E element)size(), capacity(), toArray() 전체코드 Doubly Linked List는 노드가 앞 뒤를 가리키는 링크가 존재하는 구조이다. Singly Linked List와 달리 노드가 앞 뒤 노드를 가리키고 있는 구조인 것이다. Doubly Linked List의 장점은? 각 노드가 다음(next)과 이전 (..
[Data Structure] 덱
·
Algorithm&Data Structure
이번에는 덱 구조에 대해 구현해 보자. 큐는 전단부에서는 삭제만 가능하고 후단부에서는 삽입을 하는 구조이다. 덱은 큐와 비슷하지만 전단부 후단부 모두 삽입 삭제가 가능한 선형 자료구조이다. 덱은 원형 큐와 동일하게 원형적으로 순환하는 구조이다. 덱을 구현하기 전 꼭 원형 큐를 구현해 보고 덱을 구현해 보는 것이 학습에 도움이 될 것 같다. 덱의 특징 덱은 Double Ended Queue로 큐의 확장된 형태라고 볼 수 있다. 앞(front) 뒤(rear) 모두 데이터 삽입 삭제 연산이 가능하며 기본적으로 큐와 동일하게 선입선출 FIFO가 기본이지만 유연하게 양쪽 접근이 가능하다. 덱이 쓰이는 곳덱은 앞 뒤에서 비교하는 로직에서 사용되고 슬라이딩 윈도우 최댓값/최솟값 문제에서도 사용된다. 운영체제 ..
[Data Structure] 큐(1) 선형 큐 구현과 단점
·
Algorithm&Data Structure
큐의 개념 선형자료구조인 큐는 FIFO(선입선출) 구조의 자료구조이다. 스택은 데이터가 들어가는 입구와 출구가 공유된 자료구조라면 큐는 입구와 출구가 서로 다른 곳에 존재한다.     큐의 주요 메서드와 front, rear 큐는 기본적으로 front와 rear 가장 처음 큐에 들어온 데이터를 front로 마지막에 들어온 데이터를 rear로 추적 관리한다.(위 그림에서는 A가 front C가 rear라고 볼 수 있다.)  큐에다가 데이터를 넣는 과정을 enqueue,  데이터를 꺼내는 과정을 dequeue라고 부른다. enqueue, dequeue 기능 말고도 스택처럼 peek, size 등 상황에 맞게 기능을 추가해도 된다.  overflow (큐가 꽉 찬 상태)   정적 할당 큐인 경우 count 변..
[Java] Object 클래스
·
Java
자바가 기본으로 제공하는 라이브러리 중에 가장 기본은 lang 패키지이다. java.lang package의 대표적인 클래스들은 Object, String, 래퍼 클래스들, Class 메타 정보, System 등이 있다.  1. import 생략 가능한 lang 패키지 java.lang은 모든 자바 애플리케이션에서 자동으로 임포트 해준다. 즉, import java.lang을 안 해도 된다.   2. 모든 객체의 최상위 부모 Object 클래스 자바에서 모든 클래스의 최상위 클래스는 항상 Object 클래스이다.   Parent class는 묵시적으로 Object 클래스를 상속받는다. 그래서 extends Object를 생략할 수 있다.  //묵시적으로 Object 클래스를 상속 받음class Paren..
하나의 배열을 공유하는 2개의 스택
·
Algorithm&Data Structure
문제  하나의 배열을 공유하여 2개의 스택을 구현하는 int형 데이터용 스택 클래스를 만들어라.      접근법   하나의 배열에 맨 처음 index와 맨 마지막 index 값을 적절히 사용한다. 여기서 맨 처음 index는 스택 A의  포인터이고 맨 마지막 index는 스택 B의 포인터로 사용한다.     Stack Interface package stack;public interface StackAssignment3Inter { int firstPush(int value); //앞쪽 스택에 값 넣는 메서드 int firstPop(); //앞쪽 스택에 값 빼는 메서드 int secondPush(int value); //뒤쪽 스택에 값 넣는 메서드 int secondPop(); //..
[Algorithm] 이진 검색
·
Algorithm&Data Structure
선형 검색은 검색 알고리즘에서 성능이 굉장히 안 좋은 알고리즘이다.물론 데이터 양이 적으면 별반 차이는 없고 찾고자 하는 값이 제일 맨 앞에 위치해 있으면 선형 검색이 더 빠를 수 있다. 평균적으로 검색하는 데이터가 많다고 가정하면 이진 검색은 성능이 좋은 검색 알고리즘이다.   이진 검색의 역사   이진 검색은 John Mauchly와 John von Neumann이 설계한 초기 컴퓨터 알고리즘 중 하나로 거슬러 올라간다. 이진 검색의 기본 개념은 그보다 훨씬 이전이다.  이진 검색이 처음 문서화된 사례는 1946년 Derrick Henry Lehmer가 쓴 "Mathematical Tables and Other Aids to Computation"에 기록되어 있다.  이진 검색은 컴퓨터 과학의 발전과..