인터넷과 정보 통신 기술의 발달에 따라 지금 우리는 고도로 정보화된 시대를 살아가고 있다. 모든사람이 다양한 자료를 활용하고 공유하며 생산하는 시대가 되었다. 이와 같은 정보의 홍수 시대에는 자료의 양이 아니라 얼마나 효율적으로 이들을 관리하고 사용하는가가 훨씬 더 중
어떤 문제를 해결하는 절차를 알고리즘(algorithm)이라고 한다.알고리즘에 관해 자세한 정보를 알고 싶다면 알고리즘 시리즈를 참고해보기 바란다.대부분의 프로그램은 데이터를 처리하고 있고 이들 자료는 자료구조를 사용하여 표현되고 저장된다. 또한 주어진 문제를 처리하
소프트웨어의 개발과 유지보수에 있어서 가장 중요한 문제는 "어떻게 소프트웨어 시스템의 복잡성을 관리할 것인가"이다. 이러한 복잡성에 대처하기 위하 새로운 아이디어들이 등장하였고 이들을 구체화한 프로그래밍 방법론과 언어들이 개발되었다. 이러한 방법론이나 언어의 핵심이 추
배열(array)은 거의 모든 프로그래밍 언어에서 기본적으로 지원된다. 배열은 기본이 되는 중요한 자료형으로 많은 고급 자료구조들에서 사용된다. 배열은 주로 여러 개의 동일한 자료형의 데이터를 한꺼번에 만들 때 사용된다.여러 개의 변수를 사용하는 것은 각각을 다른 이름
일상생활을 하거나 게임을 할때 가끔가다가 '스택을 쌓는다.' 또는 '스택이 쌓였다.'라는 말을 하거나 듣는 경우가 종종 있다.이 '스택'이라는 것은 무엇으로부터 나왔으며 정확한 개념이 무엇인지 알아보겠다. 스택(stack)은 가장 간단한 형태의 자료구조 중하나로, 후입
스택이 나중에 들어온 데이터가 먼저 나가는 구조인데 반해서 큐(Queue)는 먼저 들어온 데이터가 먼저 나가는 자료구조이다.이러한 특성을 선입선출(FIFO: First In First Out)이라고 한다.큐는 뒤에서 새로운 데이터가 추가되고 앞에서 데이터가 하나씩 삭제
덱(deque)은 double-ended queue의 줄임말로 큐의 front와 rear에서 모두 삽입과 삭제가 가능한 큐를 말한다. 하지만 여전히 중간에서 삽입하거나 삭제하는 것은 허용하지 않는다.배열을 이용한 원형 덱의 동작은 원형 큐와 거의 비슷하다.앞에서 큐 클
스택과 큐 등의 자료구조를 배열을 이용하여 구현하면 구현이 간단하고 빠르다는 장점이 있지만 크기가 고정된다는 단점이 있다.즉, 배열은 처음에 설정한 공간이 가득 차면 더 이상 데이터를 추가할 수 없다.연결된 표현(linked representation)을 사용하면 이러
리스트(list) 또는 선형 리스트(linear list)는 자료를 정리하는 방법 중의 하나이다.리스트에는 보통 항목들이 차례대로 정리되어 있다, 리스트의 항목들은 순서 또는 위치를 가진다. 리스트는 집합과는 다르다. 집합은 각 항목 간에 순서의 개념이 없지만 리스트에
순환을 알아 보기에 앞서서 순환과 반복은 다르다는 것을 알아두자!순환 : 알고리즘이나 함수가 수행 도중에 자기 자신을 다시 호출하여 문제를 해결하는 기법반복 : 말그대로 반복하여 문제를 해결하는 기법순환(recursion)이란 어떤 알고리즘이나 함수가 자기 자신을 호출