프로그래밍
-
[C++ 문법] 구조체프로그래밍/C++ 2019. 4. 4. 23:42
C++ 문법 Struct 개념부분은 내용을 조금씩 추가 할 예정입니다. 개념 구조체는 관련있는 변수들을 모아서 하나의 새로운 변수 타입을 만들어주는 기능이다. 쉽게말해 사용자 정의 변수타입이라고 할 수있다. 배열과 구조체의 공통점 1. 데이터 집합이다. 2. 연속된 메모리 블럭에 할당된다. - 따라서 structname 변수명 = {}; 와 같이 선언하면 구조체 안에 변수를 모두 0으로 초기화가 가능하다. 문법 sturct 구조체명 {}; 구조체명 변수명 구조체명.변수명 코드 : 클래스의 멤버변수 출력해보기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 # include #define NAME_S..
-
[C++ 문법] 참조자형프로그래밍/C++ 2019. 4. 4. 15:33
C++ 문법 참조자형 개념부분은 내용을 조금씩 추가 할 예정입니다. 개념 참조자형은 마치 닉네임을 사용하는 것과 유사하다. 원래 한공간에 변수명은 하나만 입력을 하지만, 두가지의 변수명으로 사용 할 수있는 것이다. 주의해야할 점은 참조자와 참조하고자 하는 변수의 자료형을 일치시켜야 하는 것이다. 문법 자료형& 변수명 = 참조하고자 하는 변수명 코드 예시1) : 같은 자료형인 두개의 인수를 받는 경우 1 2 3 4 5 6 7 8 9 10 11 int main() { int Var1 = 5; int& Var2 = Var1; cout
-
[C++ 문법] Nullptr프로그래밍/C++ 2019. 4. 3. 15:03
C++ 문법 Nullptr 개념부분은 내용을 조금씩 추가 할 예정입니다. 개념: 요점만 말하자면 Nullptr 은 포인터를 초기화하는 키워드입니다.보통 일반변수를 선언할때 int Num=10; 이런식으로 원하는 값을 넣어 둡니다.하지만 값이 바로 정해지지 않는 경우 int Num= Null 이런식으로 초기화를 해두죠? 이건 바로 쓰레기값을 피하기 위해서 입니다. 컴퓨터는 Null 이 아닌 모든 값을 True 로 판단하기 때문입니다. 1int* Pnum = nullptr;cs 그래서 이런식으로 선언을 해주면 포인터 변수가 아무것도 가리키고 있지 않은 것을 의미합니다.
-
[C++ 문법] Template프로그래밍/C++ 2019. 4. 2. 21:38
C++ 문법 Template 개념부분은 내용을 조금씩 추가 할 예정입니다. 문법 template or template 1 2 3 1 : 선언해주는 이름 2 : class, typename 두 가지의 경우가 있는데, 아무거나 사용해도 좋다. 하지만 class 의 경우 이미 정해진 이름이 있기 때문에 보통 typename 을 사용한다. 3 : 여기에는 편하게 사용할 문자를 사용하는데, 역시 보통 T 를 사용합니다. 코드 예시1) : 같은 자료형인 두개의 인수를 받는 경우 1 2 3 4 5 6 template T add(T a, T b) { return a + b; } cs 다시 return 하는 경우 당연히 함수도 T 로 선언해줘야 겠죠ㅎㅎ 코드 예시2) : 다른 자료형인 두개의 인수를 받는 경우 1 2 3..
-
[알고리즘] 힙정렬(Heap sort)프로그래밍/알고리즘 2019. 3. 28. 15:41
알고리즘 힙정렬(Heap sort) 힙 정렬은 트리 구조를 이용하기 때문에 이해하는데 가장 오랜시간이 걸렸어요. 저는 자료구조를 배우지 않은 상태에서 알고리즘을 시작했거든요. 그래서 이번엔 저 처럼 자료구조를 배우지 않고 알고리즘을 먼저 시작한 사람들을 대상으로 설명할 예정입니다. 이해 순서 1. 트리의 구조를 이해한다. 2. 이진 트리를 이해한다. 3. 완전 이진 트리를 이해한다. 4. 최대힙과 최소힙을 이해한다. 5. 힙정렬을 이해한다. 주의 : 1 ~ 4 과정은 자료구조 게시판에 자세히 올릴 예정이므로 간단하게 설명하겠습니다. 트리 구조란 ? : 나무의 뿌리(root) , 줄기(trunk), 잎(leaf) 처럼 특정한 관계를 갖고 있는 자료들을 의미합니다. 그림을 보면 마치 뒤집어 놓은 나무처럼 보..
-
[알고리즘] 퀵정렬(Quick sort)프로그래밍/알고리즘 2019. 3. 28. 15:37
알고리즘 퀵정렬(Quick sort) 간단 요약 1. 임의의 값을 피벗(Pivot) 으로 정한다. 2. 피벗을 기준으로 하나씩 비교하여 피벗보다 작은 값은 왼쪽, 큰 값은 오른쪽으로 정리한다. 3. 피벗을 기준으로 왼쪽 과 오른쪽의 배열을 비균등 분할을 한다. 4. 각각의 배열에서 순환 호출을 통해 더 이상 분할되지 않을 때 까지 반복 상세 설명 병합 정렬은 분할, 정복, 결합 세단계의 과정을 거쳐서 완성된다. 분할 : 피벗을 기준으로 비균등 분할 정복 : 각 배열의 크기가 더 이상 분할 할 수 없을 때 까지 순환 호출을 통해 분할을 반복한다. 결합 : 한회의 분할,정복이 끝날 때 마다 최소 하나이상의 피벗값이 생긴다. -> 각 회마다 결정되는 피벗값의 위치는 정렬이 완성되었을때의 위치와 같기 때문에 각..
-
[알고리즘] 병합정렬(Merge sort)프로그래밍/알고리즘 2019. 3. 27. 17:03
알고리즘 병합정렬(Merge sort) 간단 요약 가정) Array[8]= { 20, 18, 50, 40, 9, 19, 5, 25 } 을 오름차순으로 정렬한다. 1. 배열을 반으로 분할 2. 반으로 나누어진 배열들을 다시 반으로 분할한다. 3. 각각의 배열의 인덱스가 하나만 남을 때까지 분할 4. 하나씩 남은 배열들을 빈배열에 오름차순으로 합친다. -> 병합정렬은 이해하기 까다로울수 있다. 복잡하지만 이렇게 하는 이유는 시간복잡도를 줄이기 위해서 이다. 예를 들어 n*n 의 시간복잡도를 갖고 있다고 하자 10개 의 배열을 정렬하는데 걸리는 시간은 100 이된다. 하지만 반으로 쪼개서 5개씩 정렬후 합치는 작업을 한다면 25 + 25 = 50 이라는 시간이 걸린다. 이런 부분에서 분할정복이 강함을 알 수 ..
-
[알고리즘] 버블정렬(Bubble sort)프로그래밍/알고리즘 2019. 3. 27. 00:50
알고리즘 버블정렬(Bubble sort) 간단 요약 가정) Array[5]= { 15 ,11 ,1 ,3 ,8 } 을 오름차순으로 정렬한다. 특징) 선택정렬은 앞에서 부터 작은수를 정렬시키지만 버블정렬은 뒤에서 부터 큰수를 정렬시킨다. 1. 첫번째 데이터 15와 두번째 데이터 11을 비교한다. 2. 15가 더 크기 때문에 서로 자리를 바꿔준다. 3. 다시 한칸 앞으로 이동해서 두번째 15 와 1을 비교한다. (2번에서 15가 두번째 데이터로 이동한상태) 4. 이번에도 15가 더 크기 때문에 서로 자리를 바꾼다. (현재 상태 { 11, 1, 15, 3, 8 } ) 5. 1회차가 끝나면 { 11, 1, 3, 8, 15 } 형태가 되고 최대값이 마지막 배열에 위치한다. 6. n 번 반복 상세 설명 가정) Arr..