인파

You Can Become A

늦게 시작해도 누구든지 노력하면 개발자가 될수 있어요 !

공부한 내용을 정리합니다
자료구조

🛠️ Stack 자료구조 실전 구현 강의 (JAVA)

Stack 자료구조 Stack 특징으론 다음과 같이 요약이 가능하다. LIFO(Last In First Out), 후입선출(後入先出) 구조이다. 마지막에 들어온게 첫번째로 빠져나간다. 그래서 직전의 데이터를 빠르게 갖고 올 수 있다. 뒤로 가기, 실행 취소(redo/undo), 그리고 컴퓨터 구조에서의 스택 메모리가 대표적이다. 균형성 검사를 할 수 있기 때문에 수식, 괄호 등의 검사에서도 쓰인다. [JCF] 🧱 Stack 구조 & 사용법 정리 Stack 컬렉션 스택(Stack)의 사전적 정의는 '쌓다', '더미' 로서 접시 스택처럼 접시를 쌓아놓은 것을 말한다. 즉, 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 자료 구조라고 할 수 있다. 아래 그림 inpa.tistory.com Stack 실전 구현하기..

category_image
인파_
2023.02.21
(0)
자료구조

🧱 자바 Stack 구조 & 사용법 정리

Stack 컬렉션 스택(Stack)의 사전적 정의는 '쌓다', '더미' 로서 접시 스택처럼 접시를 쌓아놓은 것을 말한다. 즉, 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 자료 구조라고 할 수 있다. 아래 그림과 같이 스택은 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 구조 특징이 있는데, 이러한 자료의 구조를 LIFO(Last In First Out) 구조라고 말한다. 함께 많이 사용되는 Queue(큐)의 경우 먼저 추가된 데이터가 먼저 나오는 FIFO(First In First Out) 동작을 갖는것과 비교된다. Stack 사용처 스택의 쓰임새의 대표적인 예로 총기류의 탄창을 들 수 있다. 마지막에 넣은 탄알이 가장 먼저에 발사되어 꺼내어지며, 결국에는 맨 처음에 넣은 탄환이 마지막에 발사되는 걸 ..

category_image
인파_
2023.02.20
(0)
자료구조

🛠️ Circular Doubly LinkedList 실전 구현 강의 (JAVA)

Circular Doubly LinkedList 자료구조 기존 Doubly LinkedList의 첫번째 노드와 마지막 노드 끼리 서로 연결 시켜, 원형 리스트 처럼 구성한 자료 구조 이러한 순환 구조는 티비 채널을 순회하거나 오디오 플레이어와 같이 데이터를 순차적 방식으로 처리하다 마지막 요소를 만나면 다시 처음 요소로 되돌아가는 애플리케이션에서 사용된다. 단일 연결 리스트를 원형으로 연결한 Circular Singly linkedList도 있다. Circular Doubly LinkedList 구현하기 (JAVA) 우선 양방향 이중 연결 리스트를 구현하기 앞서 먼저 Doubly LinkedList 자료구조 구현을 연습 해보고 오는 것을 권장한다. Circular Doubly LinkedList는 기존 ..

category_image
인파_
2023.02.17
(0)
자료구조

🛠️ Doubly LinkedList 실전 구현 강의 (JAVA)

Doubly LinkedList 자료구조 노드(객체)를 연결하여 리스트 처럼 만든 컬렉션 (배열이 아님) 노드들을 연결하여 목록을 구성하기에 용량(capacity) 개념이 없다. (무한정 저장 가능) 데이터의 저장순서가 유지되고 중복을 허용한다. ArrayList 처럼 인덱스로 요소를 접근하지만, 배열이 아니기 때문에 별도로 탐색시간이 걸려 임의의 요소에 대한 접근 성능은 좋지 않다. 대신 데이터의 중간 삽입, 삭제가 빈번할 경우 빠른 성능을 보장한다. 하지만 노드에 들어있는 게 많은 만큼 메모리의 사용량이 많아진다는 단점이 있다. Singly LinkedList는 단방향 연결 리스트이기 때문에 만일 리스트의 끝 요소를 탐색하려면, 처음(head)부터 끝까지 순회하며 탐색해야 하지만, Doubly Lin..

category_image
인파_
2023.02.16
(0)
자료구조

🛠️ Singly LinkedList 실전 구현 강의 (JAVA)

Singly LinkedList 자료구조 Singly Linkedlist(단일 연결 리스트) 특징으론 다음과 같이 요약이 가능하다. 노드(객체)를 연결하여 리스트 처럼 만든 컬렉션 (배열이 아님) 데이터의 중간 삽입, 삭제가 빈번할 경우 빠른 성능을 보장한다. 하지만 임의의 요소에 대한 접근 성능은 좋지 않다. 특히 Singly Linked List는 단방향 연결 리스트이기 때문에 만일 리스트의 끝 요소를 탐색하려면, 처음(head)부터 끝까지 순회하며 탐색해야 하기 때문에 굉장히 효율이 떨어진다. (이를 개선한 것이 Doubly Linked List) 이밖에 데이터의 저장순서가 유지되고 중복을 허용한다. [JCF] 🧱 LinkedList 구조 & 사용법 - 정복하기 LinkedList 컬렉션 자바의 L..

category_image
인파_
2023.02.09
(0)
자료구조

🧱 ArrayList vs LinkedList 특징 & 성능 비교

LinkedList vs ArrayList 특징 비교 LinkedList가 각기 노드를 두고 주소 포인터를 링크하는 식으로 자료를 구성한 이유는 ArrayList가 배열을 이용하여 요소를 저장함으로써 발생하는 단점을 극복하기 위해 고안되었기 때문이다. ArrayList LinkedList 컬렉션 구성 배열을 이용 노드를 연결 (linked) 데이터 접근 시간 모든 데이터 상수 시간 접근 위치에 따라 이동시간 발생 삽입 / 삭제 시간 삽입/삭제 자체는 상수 시간 삽입/삭제 시 데이터 이동이 필요한 경우 추가시간 발생 삽입/삭제 위치에 따라 그 위치까지 이동하는 시간 발생 리사이징 필요 공간이 부족할경우 새로운 배열에 복사하는 추가 시간 발생 - 데이터 검색 최악의 경우 리스트에 있는 아이템 수 만큼 확인 ..

category_image
인파_
2023.02.08
(0)
자료구조

🧱 자바 LinkedList 구조 & 사용법 - 정복하기

LinkedList 컬렉션 자바의 Linked List는 ArrayList와 같이 인덱스로 접근하여 조회 / 삽입이 가능하지만 내부 구조는 완전히 다르게 구성되어 있다는 점이 특징이다. ArrayList는 내부적으로 배열을 이용하여 메서드로 이리저리 조작이 가능하게 만든 컬렉션이라면, Linked List는 노드(객체) 끼리의 주소 포인터를 서로 가리키며 링크(참조)함으로써 이어지는 구조이다. 위 그림을 보면 LinkedList는 각기 노드마다 화살표로 연결되어 리스트 형태로 나열되어 있는 것을 볼 수 있다. 여기서 노드는 하나의 객체라고 보면된다. 즉, 객체를 만들면 객체의 주소가 생기게 되는데, 노드마다 각기 객체의 주소를 서로 참조함으로서 연결 형태를 구성하는 것이다. 단일 노드를 그림과 코드로 표..

category_image
인파_
2023.02.07
(0)
자료구조

🛠️ ArrayList 자료구조 실전 구현 강의 (JAVA)

ArrayList 자료구조 ArrayList 특징으론 다음과 같이 요약이 가능하다. 연속적인 데이터의 리스트 (데이터는 연속적으로 적재 되있어야 하며 중간에 빈공간이 있으면 안된다) ArrayList 클래스는 내부적으로 Object[] 배열을 이용하여 요소를 저장 배열을 이용하기 때문에 인덱스를 이용해 요소에 빠르게 접근할 수 있다. 크기가 고정되어있는 배열과 달리 데이터 적재량에 따라 가변적으로 공간을 늘리거나 줄인다. 그러나 배열 공간이 꽉 찰때 마다 배열을 copy하는 방식으로 늘리므로 이 과정에서 지연이 발생하게 된다. 데이터를 리스트 중간에 삽입/삭제 할 경우, 중간에 빈 공간이 생기지 않도록 요소들의 위치를 앞뒤로 자동으로 이동시키기 때문에 삽입/삭제 동작은 느리다. 따라서 조회를 많이 하는 ..

category_image
인파_
2023.02.06
(0)
자료구조

🧱 Arrays.asList() 와 List.of() 차이 한방 정리

자바에서 리스트를 만드는 방법 자바에서 리스트를 만드는 방식은 대표적으로 3가지 정도 존재한다. 하나는 생성자로 직접 리스트 객체를 인스턴화 시키는 것이고, 좀 더 간편하게 원소가 들은 리스트를 한방에 생성하기 위해 별도로 Arrays.asList() 와 List.of() 메서드를 지원한다. public static void main(String[] args) { // 생성자 방식 List arrayList = new ArrayList(); arrayList.add(1); arrayList.add(2); arrayList.add(3); // Arrays 클래스의 asList 메서드 List asList = Arrays.asList(1, 2, 3); // List 인터페이스의 of 메서드 (jdk 9) L..

category_image
인파_
2023.02.03
(0)
자료구조

🧱 ArrayList vs Vector 동기화 & 성능 차이 비교

멀티 쓰레드 환경에서의 ArrayList 와 Vector ArrayList와 Vector 클래스 모두 배열(Array)를 기반으로 한 컬렉션이다. 실제 두 메서드 구성 및 사용법을 보면 거의 비슷하며 기능상 동일하다. 하지만 한 가지 다른 점이 있는데 바로 메서드에 synchronized(동기화) 키워드 유무이다. 그리고 이 synchronized 키워드는 자바에서 매우 중요한 개념이다. 자바는 기본적으로 멀티 쓰레드 환경을 고려한 프로그래밍 언어이다. 그래서 자바스크립트와 같은 왠만한 인터프리터 언어 보단 성능이 좋다. 그러나 각 쓰레드마다 어느 데이터에 동시에 접근하여 삽입과 삭제와 같은 수정을 행할경우 개발자 의도와는 다르게 오동작의 문제점이 발생하게 된다. 이를 경쟁 상태(Race Conditio..

category_image
인파_
2023.02.02
(0)
자료구조

🧱 자바 Vector 구조 & 사용법 정리

Vector 컬렉션 Vector은 ArrayList와 같이 List 인터페이스를 상속받는 컬렉션 프레임워크이며, 사용법은 ArrayList와 크게 다르지 않다. 컬렉션 프레임워크가 나오기전에 가변 개수의 배열이 필요할 때 과거에 사용되었으며, 현대에는 성능 상 사용하지않고 ArrayList를 사용한다. 다만 호환성을 위해서 제거하지않고 남겨두었다고 보면 된다. 오래된 클래스를 굳이 배울 필요가 있나 싶겠지만, 멀티 쓰레드 환경에서의 Vector 컬렉션의 동기화에 대해 짚고 넘어갈 필요가 있기 때문이다. Vector 사용법 Vecotor 컬렉션의 메서드 구성은 ArrayList와 거의 같다고 보면 된다. 메 서 드 설 명 boolean add(E element) 벡터의 맨 뒤에 element 추가 void..

category_image
인파_
2023.02.01
(0)
자료구조

🧱 자바 ArrayList 구조 & 사용법 정리

ArrayList 컬렉션 자바의 컬렉션 프레임워크를 접한다면 가장 먼저 배우는 컬렉션이 ArrayList 일 것이다. 자료구조(Data Structure) 이라고 해서 무언가 방대하게 느껴져 접근이 어려울 것 처럼 느끼겠지만, ArrayList는 배열의 상위호환 버전 정도로 이해하면 된다. 기존의 배열만으로는 자료를 담고 관리하는데 약간 불편함이 있어서 나온 것이 ArrayList 이기 때문이다. ArrayList 특징 연속적인 데이터의 리스트 (데이터는 연속적으로 리스트에 들어있어야 하며 중간에 빈공간이 있으면 안된다) ArrayList 클래스는 내부적으로 Object[] 배열을 이용하여 요소를 저장 배열을 이용하기 때문에 인덱스를 이용해 요소에 빠르게 접근할 수 있다. 크기가 고정되어있는 배열과 달리..

category_image
인파_
2023.01.31
(0)