안녕하세요, IT디자이너입니다. 이번에는 정렬 알고리즘 중 하나인 버블 정렬(Bubble Sort)에 대해서 포스팅하도록 하겠습니다. -정렬의 필요성 정렬(sorting)은 이름, 학번, 키 등 핵심 항목의 대소 관계에 따라 데이터 집합을 일정한 순서로 줄지어 늘어서도록 바꾸는 작업을 말합니다. 이러한 정렬(sorting) 작업은 우리가 무언가를 검색할 때 더욱 쉽게 할 수 있습니다. 만약, 사전에 실린 수십만 개의 단어가 알파벳이나 가나다순으로 정렬되어 있지 않으면 원하는 단어를 찾기가 어려운 것처럼 말이죠! - 버블 정렬(Bubble sort)이란 버블 정렬은 첫 번째 인덱스부터 이웃한 두 요소의 대소 관계를 비교하여 교환을 반복합니다. 또한 버블 정렬의 첫 번째 패스(Pass)는 배열의 길이에서 -..
안녕하세요, IT디자이너입니다. 이번에는 링크드 리스트(Linked ListSingly Linked List)에 대하여 포스팅하도록 하겠습니다. - 리스트(List)란 무엇인가? 리스트(List)는 데이터를 순서대로 나열한(줄지어 늘어놓은) 자료구조입니다. 대표적으로 스택과 큐가 리스트 형태의 자료구조입니다. 하지만, 배열로 구현된 선형 리스트는 다음과 같은 문제를 가지고 있습니다. 단점) 쌓이는 데이터의 크기를 미리 알아야합니다. 데이터를 중간에 삽입, 삭제에 따라 데이터를 모두 옮겨야 하기 때문에 효율이 좋지 않습니다. 이러한 단점들을 보안하기 위해 "노드(Node)"라는 개념과 포인터를 사용하여 연결 리스트(Linked List)를 구현할 수 있습니다. 사진 처럼 Node라는 객체에 저장할 데이터와..
안녕하세요, IT디자이너입니다. 이번 포스팅은 큐(Queue) & 원형 큐(Queue)에 관하여 포스팅하도록 하겠습니다. - 큐(Queue) 란? 큐(Queue)는 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out)의 구조로 저장하는 형식입니다. 또한 Queue의 영어 단어로는 표를 사러 일렬로 늘어선 사람들을로 이루어진 줄을 뜻하기도 합니다. 즉, 먼저 줄을 선 사람이 먼저 나갈 수 있는 상황을 연상하면 됩니다.! - 큐(Queue)의 front 와 rear 란? 큐(Queue)는 오로지 한쪽에서만 삽입이 이루어지고 다른 한쪽에서는 출력만 가능합니다. 즉, 삽입이 이루어지는 쪽을 "rear" 출력이 이루어지는 쪽을 "front" 라고 합니다. 값을 삽입할 수록 rear 값..
안녕하세요, IT디자이너입니다. 이번에는 컴퓨터의 자료구조 스택(Stack)에 관하여 포스팅하도록 하겠습니다. - 스택(Stack)이란? 스택은 말 그대로 스택처럼 쌓아올리는 형태의 자료구조를 뜻합니다. 쌓아 올리는 스택(Stakc)은 가장 마지막에 입력된 요소가 가장 먼저 출력됩니다. 이러한 특성의 자료구조를 (Last In First Out) 구조라고 합니다. - 스택(Stack)의 top이란? 스택은 기본적으로 현재 스택의 위치를 가리키는 top 의 값을 이용하여 스택을 쌓거나 값을 출력합니다. 또한 배열을 이용하여 구현할 수 있으며, top 초기화 값은 -1로 하여 0번째 인덱스 부터 가리킬 수 있도록 구현합니다. - 스택(Stack)에서 사용하는 함수 Push() : 스택에 값을 넣는 함수입니다..
안녕하세요, IT디자이너입니다. 이번에는 간단한 번역기 프로그램을 구현해보록 하겠습니다. 문자열 관련 함수 연습에 도움이 될것입니다.!! 1. 실행 예제 위 사진처럼 우리가 입력한 문자열을 한 단어씩 번역하여 출력하고 있습니다. 여기서 주의해야 할 점은 공백을 입력 받을 수 없는 scanf(); 함수를 사용할 수 없다는 것입니다. 즉, gets() 함수를 사용하여야 합니다. 또한, C언어의 문자열 특성인 ( Null terminated byte string ) 고려하여야 합니다. 즉, 일반적으로 배열이나 포인터로 된 변수가 문자열을 읽을 때 딱! NULL 까지만 읽게됩니다. 이러한 특성을 사용하면 문자열 공백 (" " or 아스키 코드 : 0x20 )을 NULL( 아스키코드 : '\0')으로 변경하여 단..
안녕하세요, IT디자이너입니다. 이번 포스팅은 정해진 시간에 따라 키보드 입력을 받을 시 점수를 얻는 게임을 만들도록 하겠습니다. 이 게임을 위해 필요한 함수들은 시간을 체크할 함수, 키보드 입력 감지 함수, 키보드 입력 버퍼를 비울 함수가 필요합니다. 1. 시간 체크 함수 먼저 시간을 체크할 함수는 여러가지가 있습니다. timeGetTime(), getTickCount(), colock() 함수 등이 있으며 이 함수들 말고도 더 많습니다. 먼저 이 함수를 사용하기 이전에 timer interrupt에 관하여 설명드리도록 하겠습니다. 윈도우즈가 여러 프로세스의 interrupt 주기는 0.015625(sec) 입니다. 즉, 시간은 지나지만 해당 시간동안은 실행되어야 할 프로세스가 실행을 기다리는 상태가 ..
안녕하세요, IT디자이너입니다. 이번에는 구조체의 패딩값을 조절하는 방법에 관하여 포스팅하도록 하겠습니다. 저번 포스팅 "C언어 구조체의 숨겨진 특징"에서 구조체를 선언 시 캐시hit율을 높이기 위해 멤버변수 정의 순서에 따라서 패딩공간이 할당된다고 언급하였습니다. 이번에는 그 패딩 공간을 컨트롤하는 방법에 관하여 포스팅 하도록 하겠습니다. - #pragma pack(1), #pragma pack() #include #pragma pack(1) struct Data { char a; int b; }; #pragma pack() int main() { Data da = { 1,2 }; } 위 코드처럼 #pragma pack(1)을 선언하여 구조체의 패딩값을 1byte 단위로 하여 없앨 수 있습니다. 또한 ..
안녕하세요, IT디자이너입니다. 이번에는 구조체의 멤버변수와 캐시라인 무효화에 관하여 포스팅하도록 하겠습니다. 우리가 어떤 구조체를 선언하여 멤버변수를 수정하고 사용하는 것을 예로 들어보겠습니다. #include struct Data { char a; int b; }; int main() { Data da = { 1,2 }; int b = 10; da.a += da.b; printf_s("%d",da.b); } 이렇게 쓰기와 읽기를 반복하는 과정으로 보았을 때 해당 멤버변수는 캐시에 있을 확률이 높습니다. 하지만 L1 캐시는 cpu의 1개의 코어당 1개씩 할당되어있습니다. 만약에 2개의 코어에 한개의 멤버변수가 각각 할당되어 있고, 1개의 코어에서 해당 멤버변수에 쓰기를 하였을 때 다른 코어에서는 그것을..
- Total
- Today
- Yesterday
- C언어 #C++ #자료구조 #알고리즘 #IT디자이너 #버블 정렬 #BubbleSort
- 스택 #자료구조 #Stack #IT디자이너 #알고리즘 #C언어 #스택 과제 #C++
- C언어 #IT디자이너 #C++언어
- C언어 #C++ #IT디자이너 #함수 #재귀 함수 #스택 #자료구조 #페인팅
- C언어 #C++ #삼각함수 #IT디자이너 #문제풀이 #2진수 #16진수 #비트 #bit #비트연산자
- C언어 #IT디자이너
- Debug #C언어 #C++ #비쥬얼스튜디오 #Release #IT
- C언어 #포인터 #IT디자이너
- IT디자이너 #QuickSort #퀵정렬 #C언어 #C++ #자료구조 #알고리즘
- C언어 #C++ #캐시hit #캐시라인 #캐시무효화
- C언어 #스트림 #버퍼링 #표준 입출력 함수 #C++언어 #IT디자이너
- C언어 #C++ #시간 함수 #타이밍 맞추기 #timer interrupt #IT디자이너
- C언어 #IT디자이너 #포인터 #배열 #포인터와 배열
- C언어 #C++ #어셈블리어 #함수 호출 규약 #IT디자이너 #비쥬얼 스튜디오 #IT
- C언어 #C++ #어셈블리어 #구조체 #구조체 특징 #IT디자이너
- C언어 #C++ #IT디자이너
- 어셈블리어 #IT디자이너 #C언어 #C++언어 #어셈블리 #어셈블러
- C언어 #C++ #어셈블리어 #열거형 데이터타입 #IT디자이너
- IT디자이너 #C언어 #C++ #속성지정자 #기억클래스 #IT #const #static #register #volatile #extern #auto #s
- C언어 #C++ #IT디자이너 #C++ 함수
- C언어 #C++ #구조체 정렬 #pragma #IT디자이너
- C언어 #포인터 #배열 포인터 #포인터 배열 #함수
- C언어 #자료구조 #C++ #연결리스트 #리스트 #알고리즘 #IT디자이너
- C언어 #C++ #파일 입출력 #텍스트파일 #IT디자이너
- QUEUE #큐 #자료구조 #원형 큐 #Circle Queue #IT디자이너 #큐 과제 #C언어 #C++언어
- C언어 #C++ #switch #if #어셈블리어 #switch문 사용 이유 #IT디자이너
- IT디자이너 #C언어 #C++ #IT디자이너 #코딩테스트
- 디버그 #Debug #Release #디버그와 릴리즈 차이 #C언어 #C++언어 #어셈블리어
- C언어 #C++ #어셈블리어 #IT디자이너 #비트연산자 #연산자 #C언어의 비트 연산자
- C언어 #C++ #어셈블리어 #재귀함수 #IT디자이너
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |