본문 바로가기

프로그래밍 언어40

컬렉션 프레임워크(1) List 인터페이스- ArrayList 컬렉션 프레임워크(Collection Framework) 컬렉션(Collection) 사전적 의미로 요소(객체)를 수집해 저장한 것 프레임워크(Framework) = 라이브러리(기능) + 프로그래밍 방식 표준화, 정형화된 체계적인 프로그래밍 방식 미리 정해진 방식대로 프로그램을 작성 누가 작성하든 프로그램이 표준화되기 때문에 프로그램 유지보수하기 쉬워짐 컬렉션 프레임워크(Collection Framework) 컬렉션(다수의 객체)를 다루기 위한 표준화된 프로그래밍 양식 많은 양의 데이터를 저장, 삭제, 검색, 비교, 정렬 작업 등을 편리하게 쉽게 수행 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 제공되는 컬렉션 라이브러리 인터페이스를 통해서 정형화된 방법으로 다양한 컬렉션 클래스 이용 인터페이스와.. 2021. 11. 30.
자료구조 - 연결리스트(1) 연결 리스트 자료구조(Data Structure) 자료구조 종류 순차 리스트 배열 / 행렬 / 레코드 스택 / 큐 / 데크 연결 리스트 단일 연결 리스트 원형 연결 리스트 이중 연결 리스트 트리 일반 트리 이진트리 선형 리스트 각 데이터가 배열과 같이 연속되는 기억 장소에 순차적으로 저장되는 자료 구조 1차원 배열과 비슷한 구조이지만, 원소의 개수가 유동적 원소를 나열한 순서가 원소들의 순서가 됨 원소들의 논리적인 순서와 메모리에 저장하는 물리적인 순서가 같은 구조로 되어 있음 순차 자료구조에는 원소들이 순서대로 연속 저장되어 있기 때문에 시작 위치와 원소의 길이를 알면 특정 원소의 위치를 알 수 있음 리스트에서 처리할 수 있는 연산 길이: 리스트의 길이를 구하는 연산 접근: 리스트의 내용을 조사하거나 변경하기 위해.. 2021. 11. 29.
Generic(제네릭) 제네릭(Generic) 클래스(인터페이스)나 메서드를 타입 파라미터를 이용하여 선언하는 기법 pubilc class 클래스명 {....} public interface 인터페이스명 {...} classGen { private T value; } 클래스 설계 시에 타입 는 아직 결정되지 않음 ㅗㅁ든 종류의 타입을 다룰 수 있음 선언 시 클래스 또는 인터페이스 이름 뒤에 을 붙임 (다이아몬드 연산자 ) 사이에 타입 파라미터 위치: 타입 파라미터 일반적으로 대문자 알파벳 한 문자로 표현 E : Element T: Type V: Value K: Ket 개발 코드에서는 타입 파라미터 자리에 구체적인 타입을 지정해야 함 Gen gen = new Gen(); Gen gen = new Gen(); 클래스 .. 2021. 11. 29.
자료구조 - 순차리스트(2) 큐(Queue), 데크(Deque) 자료구조(Data Structure) 자료구조 종류 순차 리스트 배열 / 행렬 / 레코드 스택 / 큐 / 데크 연결 리스트 단일 연결 리스트 원형 연결 리스트 이중 연결 리스트 트리 일반 트리 이진트리 순차 리스트 각 자료가 메모리 중에서 서로 이웃해 있는 구조 선형 구조라고도 함 메모리에 연속적으로 저장 종류 배열 / 행렬 / 레코드 스택 / 큐 / 데크 큐 (Queue) 선형 리스트 구조의 특별한 형태 기억 장소의 한쪽 끝에서 데이터의 입력이 이루어지고, 다른 한쪽 끝에서 출력이 이루어지는 형태 먼저 삽입한 데이터가 먼저 삭제되는 구조를 가짐 FIFO(First-In First-Out) / 선입선출의 형태 전위 포인터(front) 데이터가 삭제되는 끝을 가리키는 포인터 후위 포인터(rear) 데이터가.. 2021. 11. 29.
자료구조 - 순차리스트(1) 스택(Stack) 자료구조(Data Structure) 자료구조 종류 순차 리스트 배열 / 행렬 / 레코드 스택 / 큐 / 데크 연결리스트 단일 연결 리스트 원형 연결 리스트 이중 연결 리스트 트리 일반 트리 이진 트리 순차 리스트 각 자료가 메모리 중에서 서로 이웃해 있는 구조 선형 구조라고도 함 메모리에 연속적으로 저장 종류 배열 / 행렬 / 레코드 스택 / 큐 / 데크 배열 크기와 데이터형이 같으며 동일한 이름을 갖는 원소들의 연속적 저장공간 배열의 원소는 메모리 내에서 연속적으로 순서대로 저장 각 배열의 원소는 첨자(인덱스 [0]부터 시작)로 구별 레코드 서로 다른 데이터 형태와 크기로 구성되어 있는 데이터 구조 이질적 구조 ex) 어떤 사람에 관한 자료들인 이름, 주민등록번호, 주소 등과 같이 서로 관계있는 여러.. 2021. 11. 29.
알고리즘 설계 기법 - 동적 프로그래밍 기법 알고리즘 설계 기법 동적 프로그래밍 기법 (Dynamic programming) 분할 정복 기법과 유사하게 부분 문제의 해답을 이용하는 방식으로 문제를 해결하는 방식 주어진 문제를 여러 개의 소문제로 분할하여 문제를 해결 상향식 설계기법 작은 문제부터 먼저 해결한 후 그 결과를 큰 문제에서 활용함으로써 효율성을 높이는 방법 동적 프로그래밍 방식 적용 방법 분할 정복식 방법과 마찬가지로 문제를 나눈 후, 주어진 부분 문제들을 한 번 계산한 후에는 특정 장소에 저장 부분 문제의 해가 필요할 때 이를 다시 계산하지 않고, 이전에 저장해둔 결과를 이용 일반적으로 동적 프로그래밍에서 부분 문제의 값을 저장하는 장소는 배열 형태를 사용 피보나치 수열 계산 과정의 트리 중복 계산 발생 다시 계산하지 않고 한번 계산한.. 2021. 11. 29.
알고리즘 설계 기법 - Greedy 알고리즘/욕심쟁이 기법 알고리즘 설계기법 욕심쟁이 기법 (Greedy method) 최적 해답을 구성할 수 있는 집합을 만들기 위해 필요한 원소를 각 단계마다 하나씩 선택해 나가는 방법 선택을 하는 매 순간마다 현재 상태에서 가장 좋아 보이는 원소를 선택하는 전략 최적의 해를 찾는 전형적인 해결 방법 즉, 각 순간에 지역적으로 가장 좋아 보이는 선택이 보여서 전체적으로 가장 좋은 최종의 답에 이르는 문제가 많기 때문에 전략이라고 할 수 있음 이 기법은 모든 최적화 문제를 해결할 수는 없으나, 많은 경우의 문제에 쉽게 적용할 수 있는 기법 중 하나 욕심쟁이 기법 적용 예 배낭 채우기 문제 거스름돈 문제 최단 경로 문제(Dijkstra의 최단 경로 Algorithm) 최소 비용 신장 트리 Prim(프림)의 알고리즘 Krusckal.. 2021. 11. 29.
알고리즘의 설계 기법 - 분할정복기법/분할정복 알고리즘 알고리즘의 설계 기법 문제를 해결해 나가는 기법 알고리즘이 채택한 전략이나 관점 대표적인 알고리즘 설계 기법 분할 정복 기법 (Divide and Conquer) 욕심쟁이 기법 (Greedy method) 동적 프로그래밍 기법 (Dynamic programming) 분할 정복 기법 (Divide and Conquer) 하향식 설계 기법 문제의 크기를 작게 나누어서 좀 더 쉽게 해결할 수 있는 상태로 변환하여 문제를 해결하는 방법 하나의 문제를 여러 개의 작은 문제로 나누고, 각각에 동일한 해결 기법을 계속적으로 적용한 후 결과를 연합하여 원래의 문제를 해결하는 기법 분할된 부분의 문제들이 크기가 커서 해결이 쉽지 않을 경우, 각 부분의 문제에 ㄷ대해 다시 분할 정복 기법 적용 각 부분의 문제들이 간단히 .. 2021. 11. 26.
순서도 작성 순서도(Flowchart) 순서도 처리하고자 하는 문제의 순서와 상호 간의 관계를 일정한 기호를 사용하여 표현한 그림 순서도의 역할 프로그램 코딩의 기초 자료로 활용 문제의 이해성 증대 디버깅 용이 프로그램의 보관, 유지보수 자료로 활용 순서도의 종류 개략 순서도 프로그램의 전체 내용을 쉽게 파악할 수 있도록 중요 부분만 블록으로 간략히 표현 상세 순서도 컴퓨터가 수행할 수 있는 명령문 단위로 세부화하여 표현 상세 순서도를 프로그래밍 언어로 코딩하면 원시 프로그램(소스)가 됨 순서도 기호의 종류 기본 기호 프로그래밍 관련 기호 시스템 관련 기호 프로그래밍 관련 기호 프로그램의 논리를 나타내는 기호 기본 기호화 함께 프로그램 순서도를 작성하는 경우에 사용 순서도의 기본 유형 - 자료의 흐름에 따라 분류 직.. 2021. 11. 26.