CS 지식/자료구조와 알고리즘(Java)
-
이번 시간에는 Stack 자료구조에 대해서 배워 볼 것입니다. 1. 스택(Stack)이란? stack은 후입선출(Last-In-First-Out; LIFO)의 대표적인 선형 자료구조 중의 하나입니다. 후입선출이란 'Last-In-First-Out'이라는 뜻 그대로 '나중에 들어온 데이터가 가장 먼저 나간다' 의 의미를 가지고 있습니다. 그 예로 인터넷 브라우저에서 뒤로 가기 기능같은 경우 그 버튼을 눌렀을 때 가장 최근의 페이지가 나오는데 이 역시 가장나중에 들어간 페이지가 가장 먼저 나오는 것이기 때문에 스택 구조라고 할 수 있습니다. 또한, Ctrl + z 와 같은 실행 취소 기능역시 제일 나중에 했던 동작을 취소하는 것이므로 스택 구조라고 볼 수 있습니다. 위 그림은 스택의 구조를 시각화한 자료입니..
[자료구조 | Java] Stack(스택)이번 시간에는 Stack 자료구조에 대해서 배워 볼 것입니다. 1. 스택(Stack)이란? stack은 후입선출(Last-In-First-Out; LIFO)의 대표적인 선형 자료구조 중의 하나입니다. 후입선출이란 'Last-In-First-Out'이라는 뜻 그대로 '나중에 들어온 데이터가 가장 먼저 나간다' 의 의미를 가지고 있습니다. 그 예로 인터넷 브라우저에서 뒤로 가기 기능같은 경우 그 버튼을 눌렀을 때 가장 최근의 페이지가 나오는데 이 역시 가장나중에 들어간 페이지가 가장 먼저 나오는 것이기 때문에 스택 구조라고 할 수 있습니다. 또한, Ctrl + z 와 같은 실행 취소 기능역시 제일 나중에 했던 동작을 취소하는 것이므로 스택 구조라고 볼 수 있습니다. 위 그림은 스택의 구조를 시각화한 자료입니..
2022.12.28 -
이번 시간에는 LinkedList의 종류 중에서 Double LinkedList에 대해서 알아 보겠습니다. 1. Doubly Linked List(이중 연결 리스트)란? 이전 내용에 있는 LinkedList는 앞에 'Single'이 생략 되어있는 셈이라 생각하면 됩니다. 그럼 무엇이 single이고 무엇이 double일까요? 위 그림은 Double LinkedList의 대략적인 구조를 나타낸 그림입니다. 아래 그림을 보면, LinkedList와는 다르게 한 노드에서 다른 노드를 가리키는 pointer가 양방향으로 있습니다. 즉, 다음 노드를 가리키는 next pointer 말고도 이전노드를 가리키는 prev pointer 하나가 더 추가 된 것입니다. 이것이 LinkedList와는 구분되는 Double ..
[자료구조 | Java] Double LinkedList(이중 연결 리스트)이번 시간에는 LinkedList의 종류 중에서 Double LinkedList에 대해서 알아 보겠습니다. 1. Doubly Linked List(이중 연결 리스트)란? 이전 내용에 있는 LinkedList는 앞에 'Single'이 생략 되어있는 셈이라 생각하면 됩니다. 그럼 무엇이 single이고 무엇이 double일까요? 위 그림은 Double LinkedList의 대략적인 구조를 나타낸 그림입니다. 아래 그림을 보면, LinkedList와는 다르게 한 노드에서 다른 노드를 가리키는 pointer가 양방향으로 있습니다. 즉, 다음 노드를 가리키는 next pointer 말고도 이전노드를 가리키는 prev pointer 하나가 더 추가 된 것입니다. 이것이 LinkedList와는 구분되는 Double ..
2022.12.27 -
이번 포스팅은 지난 포스팅에 이어 ArrayList에서 했던 것과 마찬가지로 LinkedList에서의 데이터 삽입, 데이터 삭제, 리스트 검색 등의 기능에 대해서 다뤄보도록 하겠습니다. 1. 연결리스트(Linked List)란? LinkedList는 Node라는 객체로 이루어져 있는데 Node는 데이터를 저장하는 field와 다음 노드를 가리킬 수 있는 next pointer field로 구성이 되어있습니다. 이말인 즉슨, 이 노드들이 연결된 형태의 자료구조를 바로 LinkedList라고 하는 것입니다. 예를 들어, 학교에서 어느 반의 모든 학생들의 데이터를 저장한다고 했을 때, 학생 한명 한명의 신상정보 자료를 노드로 만들고, 1번 학생의 신상정보 자료에 2번 신상정보 자료가 어디 있는 지 표시를 해 ..
[자료구조 | Java] LinkedList(연결 리스트) 이론 및 구현이번 포스팅은 지난 포스팅에 이어 ArrayList에서 했던 것과 마찬가지로 LinkedList에서의 데이터 삽입, 데이터 삭제, 리스트 검색 등의 기능에 대해서 다뤄보도록 하겠습니다. 1. 연결리스트(Linked List)란? LinkedList는 Node라는 객체로 이루어져 있는데 Node는 데이터를 저장하는 field와 다음 노드를 가리킬 수 있는 next pointer field로 구성이 되어있습니다. 이말인 즉슨, 이 노드들이 연결된 형태의 자료구조를 바로 LinkedList라고 하는 것입니다. 예를 들어, 학교에서 어느 반의 모든 학생들의 데이터를 저장한다고 했을 때, 학생 한명 한명의 신상정보 자료를 노드로 만들고, 1번 학생의 신상정보 자료에 2번 신상정보 자료가 어디 있는 지 표시를 해 ..
2022.12.27 -
첫번째 자료구조로 가장 간단한 형태의 리스트에 대해서 배워보겠습니다. 1. 리스트란? 리스트는 선형적인 자료구조 중의 하나로서 데이터를 일렬로 늘여 놓은 형태입니다. 그렇기 때문에 리스트는 순서를 가진다는 특징이 있습니다. 모든 언어를 사용하든 간에 가장 기본적으로 배우게 되는 메모리 공간 형태이며 자료형(Data Type)이 둘 이상의 값을 저장할 수 있습니다.(다만, Python은 예외) 이곳에서는 리스트를 어떻게 생성하고 어떻게 사용하는 지 보다는 리스트라는 자료구조에서 데이터를 어떻게 다루는 지에 대해 더 알고 싶기 때문에 이번 챕터에서는 리스트를 관리를 할 때 중요한 기능 3가지를 다루어 보겠습니다. 데이터 삽입하기 데이터 삭제하기 리스트 탐색하기 이 3가지는 어떤 데이터 구조를 다룰 때도 항상..
[자료구조 | Java] 리스트(List) - ArrayList첫번째 자료구조로 가장 간단한 형태의 리스트에 대해서 배워보겠습니다. 1. 리스트란? 리스트는 선형적인 자료구조 중의 하나로서 데이터를 일렬로 늘여 놓은 형태입니다. 그렇기 때문에 리스트는 순서를 가진다는 특징이 있습니다. 모든 언어를 사용하든 간에 가장 기본적으로 배우게 되는 메모리 공간 형태이며 자료형(Data Type)이 둘 이상의 값을 저장할 수 있습니다.(다만, Python은 예외) 이곳에서는 리스트를 어떻게 생성하고 어떻게 사용하는 지 보다는 리스트라는 자료구조에서 데이터를 어떻게 다루는 지에 대해 더 알고 싶기 때문에 이번 챕터에서는 리스트를 관리를 할 때 중요한 기능 3가지를 다루어 보겠습니다. 데이터 삽입하기 데이터 삭제하기 리스트 탐색하기 이 3가지는 어떤 데이터 구조를 다룰 때도 항상..
2022.12.27 -
1. 자료구조와 알고리즘이란 음식과 그릇의 비유 우리 일상에는 수많은 음식이 존재하고 음식의 형태에 따라 어떤 그릇에 담기는 지가 상당히 중요합니다. 만약 파스타가 컵에 담기거나 음료수가 일반적인 그릇에 담긴다면 먹기가 굉장히 불편할 것입니다. 이처럼 데이터(Data)와 자료구조(Data structure)도 이와 같은 관계에 놓여있습니다. 데이터는 음식, 자료구조는 그릇이 되어 올바른 데이터 구조에 데이터를 담아야 더욱 효율적인 코딩이 가능해 집니다. 즉, 자료를 어디에, 어떻게 관리할 지를 제대로 알아야 코딩을 통해 내가 원하는 결과물을 얻을 수 있는겁니다. 예) 검색, 순회(iterate), 저장, 삭제, 변경 2. Data와 Data Structure 컴퓨터의 자원은 한정적이며(CPU, 메모리 등..
[자료구조 | Java] 자료구조와 알고리즘 기초1. 자료구조와 알고리즘이란 음식과 그릇의 비유 우리 일상에는 수많은 음식이 존재하고 음식의 형태에 따라 어떤 그릇에 담기는 지가 상당히 중요합니다. 만약 파스타가 컵에 담기거나 음료수가 일반적인 그릇에 담긴다면 먹기가 굉장히 불편할 것입니다. 이처럼 데이터(Data)와 자료구조(Data structure)도 이와 같은 관계에 놓여있습니다. 데이터는 음식, 자료구조는 그릇이 되어 올바른 데이터 구조에 데이터를 담아야 더욱 효율적인 코딩이 가능해 집니다. 즉, 자료를 어디에, 어떻게 관리할 지를 제대로 알아야 코딩을 통해 내가 원하는 결과물을 얻을 수 있는겁니다. 예) 검색, 순회(iterate), 저장, 삭제, 변경 2. Data와 Data Structure 컴퓨터의 자원은 한정적이며(CPU, 메모리 등..
2022.12.27 -
1. Basic Concept 이 Data structure and algorithm에서는 자료구조와 알고리즘의 각 종류와 세세한 이론을 바탕 및 구현으로 한 내용이 주를 이루어 기술하는 카테고리입니다. 2. 시작하기 앞서... 자료구조와 알고리즘은 타 과목에 비해 중도포기하는 사람이 많은 과목이라고 합니다. 막히거나 답답한 부분이 자주 나올 수도 있지만 어려운 것이 정상이고 모두가 다 어려워 하기 때문에 기초부터 차근차근 배워나가면 충분히 소화할 수 있는 과목이기도 합니다. 이 카테고리(자료구조와 알고리즘 with Java) 에서는 모든 코드를 알고리즘 동작방식에 초점을 맞추어 java언어로 짰습니다. 파이썬을 이용한 자료구조와 알고리즘도 따로 포스팅 해 두었으니 파이썬을 이용한 자구알을 원하시는 분들..
[자료구조&알고리즘 with Java] 자료구조 및 알고리즘 시작1. Basic Concept 이 Data structure and algorithm에서는 자료구조와 알고리즘의 각 종류와 세세한 이론을 바탕 및 구현으로 한 내용이 주를 이루어 기술하는 카테고리입니다. 2. 시작하기 앞서... 자료구조와 알고리즘은 타 과목에 비해 중도포기하는 사람이 많은 과목이라고 합니다. 막히거나 답답한 부분이 자주 나올 수도 있지만 어려운 것이 정상이고 모두가 다 어려워 하기 때문에 기초부터 차근차근 배워나가면 충분히 소화할 수 있는 과목이기도 합니다. 이 카테고리(자료구조와 알고리즘 with Java) 에서는 모든 코드를 알고리즘 동작방식에 초점을 맞추어 java언어로 짰습니다. 파이썬을 이용한 자료구조와 알고리즘도 따로 포스팅 해 두었으니 파이썬을 이용한 자구알을 원하시는 분들..
2022.12.26