전체 글 219

[강의] 11월 28일 수업정리

오늘은 heap구조에 대한 수업을 들었다. 1. HEAP 구조1. HEAP 구조란완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조이다.여러 개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조이다.힙은 일종의 반정령 상태를 유지하며 큰 ㄱ밧이 상위 레밸에 있고 작은 값이 하위 레밸에 있다는 정도이며 간단히 말하면 부모 노드의 키 값이 자식 노드의 키 값보다 항상 큰(작은) 이진 트리를 말한다.힙 트리에서는 중복된 값을 허용한다 ( 일반 적인 이진 탐색 트리에서는 중복된 값을 허용하지 않음. ) 1.2 HEAP 구조 예시// heap.h#pragma once#include class C_HEAP{private: int m_arData[11]; int m_nLastInde..

C++ 2024.11.29

[강의] 11월 27일 수업정리

다른 방식으로 이진 검색 알고리즘, 힙 구조에 대한 간단한 내용에 대한 수업을 들었다. 1. 이진 검색 1.1 배열 초기화에 대한 오해 배열의 초기화와 관련하여 오해하는 부분이 존재한다.특히, 배열의 인덱스를 -1로 초기화하는 경우가 이에 해당이 되는데. 요세는 배열의 0번지를 의도적으로 비워두고 "값 없음" 으로 있고 없고를 판단하는 방식으로 사용한다.하지만 -1로 초기화를 하는 경우 조건이 존재하는데 일반 int형이 아닌 unsigned int형을 사용해야한다. 이것이 핵심이다. 1.2 low, high를 이용하여 이진 검색 #include int main(){ int arData[40]{}; for (int i = 0; i = nLow && !nFind) { nMiddle = (nLow + nHi..

C++ 2024.11.27

[강의] 11월 26일 수업정리

오늘은 이진 검색 알고리즘에 대한 수업을 들었다. 1. 이진 검색 알고리즘오름차순으로 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘이다.처음 중간의 값을 임의의 값으로 선택하여, 그 값과 찾고자 하는 값의 크고 작음을 비교하는 방식을 채택하고 있다. 이진 검색은 정렬된 리스트에서만 사용할 수 있다는 단점이 존재하지만, 검색이 반복될 때마다 검색 범위가 절반으로 줄기 떄문에 속도가 빠르다는 장점이 있다 ( log n )  1.1 포인터와 길이를 이용하여 이진 검색 알고리즘 #include int main(){ int arData[40]{}; int nData{}; for (int i = 0; i 0 && pData[nFindIndex] != nData) { if (pData[nFindIndex] ..

C++ 2024.11.27

[강의] 11월 22일 수업정리

오늘의 수업은 재귀 함수에 대한 수업이었다. 1. 재귀 함수  1.1 재귀와 반복보통 재귀와 반복이 많이 비교가 된다. 우리가 흔히 사용하는 for문이나 while문과 같은 반복 연산을 가리킨다.항상 그런 것은 아니지만 많은 경우에 재귀로 처리할 수 있는 문제는 반복으로도 처리할 수 있고 반대로 반복으로 처리할 수 있는 것은 재귀로 처리할 수 있다. 어떤 방법으로 문제를 해결하느냐는 프로그래머의 마음이지만 때로는 반복코드보다 재귀 코드를 사용했을 때 더 이해하기 쉬운 코드가 될 때가 있다. 그러므로 우리는 두 가지 방법을 모두 명확하게 알고 있어야 한다.   1.2 재귀 함수 재귀 함수란 자기 자신을 호출하여 작업을 수행하는 함수이다.재귀는 단순히 반복문처럼 동작한다고 이해해서는 안 된다. 함수가 호출될..

C++ 2024.11.23

[강의] 11월 21일 수업정리

오늘은 디버그에 대한 수업을 들었다. 1. 단축키 F9: 브레이크 포인트 설정/해제.F10: 다음 줄로 실행(함수 내부 진입 X).F11: 함수 내부로 진입하며 실행.F5: 브레이크 포인트까지 실행(브레이크 포인트 없으면 끝까지 실행).Shift + F11: 함수 내부에서 나옴(되돌림 아님, 전체 실행 후 나오는 것).레이아웃 되돌리기: 레이아웃 문제 시 원래대로 복구. 2. 디버그 모드  2.1디버그 모드와 릴리스 모드 차이 릴리스 모드: 디버깅 불가능. 최적화된 실행 모드.디버그 모드: 오류 검출 및 디버깅 용이. 디버깅 전용 환경. 2.2 디버그 창에서의 주요 기능 2.2.1 호출 스택(Call Stack) [ 핵심 ] 위치 :디버그 창 오른쪽 하단.역할:함수 호출 순서 추적.잘못된 값의 출처 확인..

C++ 2024.11.21

[강의] 11월 20일 수업정리

오늘은 빅오 데이터와 버블 정렬에 대한 수업을 들었다.1. 빅 오 데이터1.1 빅오(Big-O)의 의미시간 복잡도(Time Complexity): 알고리즘이 실행되는 속도를 표현. 가장 많은 작업(연산)을 요구하는 반복문의 구조를 기준으로 측정.예를 들어, 반복문의 횟수와 데이터 크기의 관계를 따진다. 1.2 주요 빅오(Big-O) 표기법O(1): 데이터 크기에 관계없이 항상 일정한 작업을 수행 (예: 단순 변수 접근).O(n): 데이터의 크기(n)에 비례하여 작업이 늘어남 (예: 단일 반복문).O(log n): 데이터 크기를 반복적으로 반으로 나누는 방식 (예: 이진 탐색).데이터의 개수를 반씩 줄이는 방식이므로, 데이터 크기(n)가 2배가 되면 작업 횟수는 한 번만 증가.O(n²): 이중 반복문처럼 ..

C++ 2024.11.21

[강의] 11월 19일 수업정리

오늘은 선택 정렬과 삽입정렬에 대한 수업을 들었다. 1. 암기 단일 원소 배열은 이미 정렬된 배열이다.원소가 하나뿐인 배열은 비교 대상이 없으므로 항상 정렬된 상태로 간주한다.선택 정렬, 삽입 정렬 등과 같은 정렬 알고리즘은 원칙에 따라 구현한다.알고리즘에 명시된 단계들을 그대로 따라 작성해야 한다.불필요하게 복잡하게 만들지 말고, 기본 원칙을 준수하며 구현한다.코드를 볼 때는 핵심 로직을 파악한다.알고리즘의 중요한 흐름(핵심 로직)을 먼저 이해하고, 이를 중심으로 코드의 구조를 해석하거나 작성한다. 2. 선택 정렬2.1 핵심 로직 첫 번째 자료를 두 전째 자료부터 마지막 자료까지 차례대로 비교하여 가장 작은 값을 찾아 첫 번째에 놓고, 두 번째 자료를 세 번째 자료부터 마지막 자료까지 차례대로 비교하여..

C++ 2024.11.20

[예습] 11월 18일 예습

1. UML 클래스 다이어그램1.1 정의클래스 다이어그램은 UML(Unified Modeling Language)의 구조 다이어그램 중 하나로, 클래스의 내부 구성 요소와 클래스 간의 관계를 시각적으로 표현하여 시스템의 특정 모듈, 일부, 또는 전체를 구조화하는 데 사용됩니다.주요 목적:클래스 간의 의존성 파악: 설계 초기 단계에서 클래스 간의 관계를 명확히 함.효율적 의사소통: 팀원 간 설계 내용을 효과적으로 공유할 수 있음.활용 단계:개념: 클래스 도출과 관계 단순화가 주 목적.명세/구현: 개발 직전 설계 및 구현 후 설명 목적으로 사용.명세 단계: 다이어그램 기반으로 코드를 설계.구현 단계: 작성된 코드를 시각화해 다이어그램을 생성. 1.2 요소1.2.1 클래스클래스는 이름, 속성(변수), 메서드 ..

예습 2024.11.18