본문 바로가기

ArrayList(어레이 리스트) 1. 어레이 리스트(ArrayList) 리스트를 만들때 내부적으로 배열을 사용한다. 리스트라는 완제품안에 배열이라는 부품을 사용하는것이다. 이 배열안에 데이터를 저장하는것이다. 2. 장점 데이터에 접근하는 것이 빠르다. 배열의 인덱스를 이용해서 메모리 상의 주소를 정확하게 참조하 기 때문에 어디든지 한 번에 참조가 가능하며 특정 인덱스를 상수 시간에 접근한다! 3. 단점 배열의 길이가 초기에 결정되어야 한다. 데이터의 추가와 삭제가 느리다. 삭제 과정에서 데이터의 이동(복사)가 매우 빈번히 일어난다. 왜냐하면 데이터를 리스트의 처음이나 중간에 추가할려면 이후의 데이터들이 한칸씩 물러나야 한 다. 삭제도 빈자리가 생기면 빈자리를 채우기 위해서 순차적으로 한칸씩 땡겨야 한다. - 추가 - 삭제
배열과 리스트2 1. 배열(array)과 리스트의 성질 1) 배열의 가장 큰 특징은 인덱스를 중요시 한다는 점이다. 즉 인덱스를 값의 식별자로서 이용해 데이터를 조회를 한다는점이다. 하지만 인덱스를 이용 해 데이터를 가져오려면 데이터에 대한 인덱스의 값이 고정 되어야 한다. 그리고 어떤 엘리먼 트가 삭제되면 삭제된 상태를 빈 공간으로 남겨둬야 한다. 그래서 메모리의 낭비를 초래하고 배열에 데이터가 있는지를 체크하는 로직이 필요하다. 2) 리스트는 저장된 순서를 중요하게 여긴다. 리스트도 내부적으로 인덱스를 가질 수는 있지만 식별자로서의 인덱스를 중요시하기보다, 빈 틈없는 데이터의 적재라는 점을 취한다. 즉 "데이터의 다음 데이터는 무엇이다" 라는 저장된 순서를 중요하게 여기며, 데이터를 나란히(하나의 열로) 저장한다. ..
배열과 리스트1 1. 배열이란? 여러 연관된 데이터를 하나의 이름으로 그룹핑해서 관리하기 위한 data structure이다. 모든 언어에서 배열을 지원하고 많은 자료구조에서 배열을 부품적으로 이용하기 때문에 가장 기본적인 자료구조이면서 중요하다고 할 수 있다. 배열을 이용하면 하나의 변수에 여러 정보를 담을 수 있다. 배열의 구성요소는 값, 인덱스, 엘리먼트가 있다. 엘리먼트는 값과 인덱스를 합친것을 말한다 2. 배열의 반복 순회 예제 student 라는 배열의 변수를 한 학급의 반으로 보고 , 그 반이라는 배열에서 학생은 하나의 엘리먼 트로 표현할 수 있다. 학생의 이름은 배열의 값, 학생의 인덱스는 학번으로 기능할 수 있다. 배열에는 여러 정보가 저장되어 있다. 이러한 다수의 정보를 처리하기 위한 방법은 반복이고 ..
추상자료형 1. 추사자료형 구체적인 기능의 완성과정을 언급하지 않고 , 순수하게 기능이 무엇인지를 나열한 것 을 가리켜 ‘추상 자료형' 또는 간단히 ADT라 한다. 2. 구조체 Wallet의 자료형 “구조체를 기반으로 지갑을 의미하는 Wallet이라는 자료형을 정의 123456789typedef struct _wallet// 동전 및 지폐 일부만을 대상으로 표현한 지갑{int coinl00Num;// 100원짜리 동전의 수int bill5000Num;// 5,000원짜리 지폐의 수} Wallet; Colored by Color Scriptercs 컴퓨터 공학적 측면에서 위의 구조체 정의만으로 Wallet이라는 자료형의 정의가 완성되는 것은 아니다. Wallet을 기반으로 하는 연산의 종 류를 결정하는 것도 자료형 ..
하노이타워(재귀) 하노이타워(재귀)
하노이타워(재귀) 하노이타워(재귀)
하노이타워(재귀) 1. 하노이 타워 문제 하노이 타워 문제는 재귀함수의 대표적인 예로 꼽힌다. 하나의 막대에 쌓여 있는 원반을 다른 하나의 원반에 그대로 옮기는 방법에 관한 것이다. 막대가 3개인 이유는 제약조건이 있기 때문이다. 2. 제약조건 원반은 한 번에 하나씩만 옮길수 있다. 그리고 옮기는 과정에서 작은 원반의 위에 큰 원반이 올려져서는 안된다 따라서 막대 B의 도움이 필요하다. 3. 문제 해결 원반의 수가 늘어나도 위 해결 과정처럼 해결방법은 똑같다. 일련의 과정을 더 많이 반복할 뿐 이다. 그래서 위 해결과정에서 반복의 패턴을 찾아야 한다. 먼저 처음 3번 원반을 C로 옮기려면1번과2번 막대를 B에다 옮기는 방법에 대해 고민해야한다. 이것이 하노이타워 문제해결의 핵심이다. 1번과 2번만 B로 옮기면 3번 원반을..
이진 탐색 알고리즘의 재귀적 구현 이진 탐색 알고리즘의 재귀적 구현