1. 스택(Stack) ▶ 스택이란, 한쪽에서만 자료를 넣고 뺄 수 있는 후입선출 LIFO(Last In First Out)형식의 선형 자료구조이다. 스택의 기본 개념은 영어 단어의 뜻과 같이 '쌓는다'는 뜻이다. 스택은 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을수 있고, top으로 정한 곳을 통해서만 접근할 수 있다. 예를 들어, 박스 쌓기에 비유할 수 있다. 박스를 아래에서 위로 차곡차곡 쌓으면 아래에 있는 박스를 치우기 위해서는 맨 위의 박스부터 치워야 한다. 아래부터 1->2->3 순서로 쌓여있는 상자를 오른쪽으로 옮긴다고 가정해보자. 먼저 가장 위에 있는 3번 상자를 오른쪽으로 옮기고, 그 후에는 2번 상자를 옮기고, 다음에는 1번 상자를 옮길 것이다. 즉, 마지막에 입력된 상자가 첫 번..
1. 자료구조 자료구조란, 데이터 사이의 관계를 반영한 저장구조 및 그 조작 방법을 뜻한다. 컴퓨터의 프로그램을 실행하면 CPU에서 메모리로 데이터를 이동해서 처리하는데, 이 때 메모리를 효율적으로 사용하기 위해 데이터에 맞는 특성의 자료구조를 사용하는 것이 중요하다. 자료구조를 모두 나열하자면 아래 표와 같이 다양한 종류가 있다. 1.1 자료구조의 구성 Insert : 데이터를 어떻게 저장 할 것인가 Search : 데이터를 어떻게 탐색 할 것인가 Delete : 데이터를 어떻게 삭제 할 것인가 1.2 자료구조의 분류 단순구조 : 프로그래밍에서 사용되는 기본 데이터 타입 선형구조 : 저장되는 자료의 전후관계가 1:1 (리스트, 스택, 큐 등) 비선형구조 : 데이터 항목 사이의 관계가 1:n 또는 n:m..
프로그래밍을 하다보면 다수의 객체를 저장해 두고 필요할 때마다 꺼내서 사용하는 경우가 많다. 만약 10개의 product 객체를 저장해두고, 필요할때 마다 하나씩 꺼내서 이용한다고 가정하면 어떻게 객체를 효율적으로 추가, 검색, 삭제 할지 고민하게 되는데 가장 간단한 방법은 배열을 이용하는것이다. 배열은 쉽게 생성하고 사용할수 있지만, 저장할 수 있는 객체 수가 배열을 생성할 때 결정되기 때문에 객체의 수가 불확실 할때에는 문제가 있다. 또 배열은 객체를 삭제하였을 경우 해당 인덱스가 비게되어 낱알이 듬성 듬성 빠진 옥수수가 될수 있다. 그렇기 때문에 새로운 객체를 저장하려면 어디가 비어 있는지 확인하는 코드도 필요하다. 자바는 이러한 문제점을 자료구조를 바탕으로 해결하여 객체를 효율적으로 추가, 검색,..