무료 동영상 강의 38

printf 함수 [C언어 표준 라이브러리 함수]

printf 함수 - C언어 표준 라이브러리 함수 int printf(const char * format, …); 표준 출력 파일 스트림에 포멧을 지정하여 출력하는 함수 입력 매개 변수 리스트 format 포멧 지정 문자열 반환 값 실패 시 음수, 성공 시 출력한 문자 수 포멧 지정 문자열에 % 문자는 변환 사양 문자로 옵션으로 flags와 길이 수정자가 올 수 있으며 필수적으로 어떠한 형식으로 출력할 것인지 포멧 지정자 문자인 diouxXaAeEfFgGp% 중에 하나를 사용합니다. 출력 포멧 지정자 개요 타입(필수): diouxXaAeEfFgGp% 중에 1개 flag(선택): – + # 공백 . (선택) 길이 수정자(선택):hh h l ll j z t 출력 포멧 d,i 는 int 형식 인자를 10진수로..

Part 31. 도서 관리 프로그램 III - 도서 추가, 도서 목록, 도서 검색, 장르 삭제 기능 구현

Part 31. 도서 관리 프로그램 III 107. 도서 관리 프로그램 – 도서 추가 C언어 도서 관리 프로그램 - 도서 추가 기능 구현 이번에는 도서 추가 시퀀스 다이어그램을 작성하기로 해요. 도서 추가에서는 먼저 모든 장르 정보를 보여주게 하세요. 장르를 선택하고 도서 제목과 작가 이름을 입력받아 도서를 생성한 후에 선택한 장르에 도서를 추가해야겠죠. 장르에서는 새로운 장르를 생성하여 장르에 도서를 보관하게 하세요. 먼저 Book 헤더에 동적으로 도서를 생성하는 함수와 소멸하는 함수를 선언하고 소스에 구현하세요. 동적으로 Book 개체를 생성하는 함수에서는 동적으로 Book 형식 크기의 메모리를 할당받으세요. 할당받은 메모리를 초기화하고 반환하세요. void BookBook(Book *book,int..

[C++] 3. 입출력 개요 (cin, cout)

3. 입출력 개요 (cin, cout) C++ 입출력 개요 cin cout 여기에서는 앞으로 C++ 문법 학습하기 위해 필수적으로 사용할 입출력에 관한 사항을 간략하게 살펴보기로 할게요. C언어에서는 stdio.h 파일을 포함하여 표준 입출력 함수들을 사용했었죠. C++에서도 C언어에서 제공하는 함수들을 사용할 수 있어요. 하지만 C++언어에서 콘솔 화면에 출력하거나 키보드에서 입력받을 때 printf 함수나 scanf 함수를 사용하는 이들은 거의 없어요. C++ 언어에서는 iostream 파일을 포함하여 cout과 cin 개체를 사용할 수 있어요. iostream은 STL(Standard Template Library,표준 템플릿 라이브러리)에서 제공하는 클래스이며 cout과 cin은 미리 선언한 전역..

[C++] 1. 들어가기에 앞서 2. C++ 언어 소개 및 책의 기술 범위

C++ 언어 소개 1. 들어가기에 앞서 이 책은 C언어를 학습한 이들을 이가 C++언어를 학습하기 위해 작성하였습니다. C++언어는 C언어와 변수나 연산, 함수 등의 기본 문법은 비슷하지만 클래스와 템플릿 문법을 있습니다. 특히 C++ 언어에서 클래스는 OOP(Object Oriented Programming, 개체(혹은 객체) 지향 프로그래밍) 방식으로 프로그래밍할 수 있게 새롭게 추가한 문법이죠. 이러한 특징으로 인해 C언어와 C++은 접근 방식에서 많은 차이를 갖고 있습니다. 이 책은 C++입문자를 위한 책이지만 단순히 C++문법을 다루고 있는 책은 아니예요. 오히려 C++에 새롭게 추가한 문법을 OOP에 어떻게 활용하는지에 관한 부분이 많습니다. 이를 위해 문법 외에도 OOP의 특징과 OOP 프로..

Part 11. 대입, 증감, 기타 연산자

C언어 - 대입, 증감, 기타 연산자 00:14 대입 연산자 01:09 [실습] 대입 연산자 l-value 01:42 [실습] 복합 대입 연산자 02:19 [실습] 대입 연산자 우선 순위 03:27 증감 연산자 03:57 [실습] 증감 연산자 05:15 기타 연산자 05:28 [실습] 콤마 연산자 06:30 [실습] 형 변환 연산자 07:05 [실습] sizeof 연산자 07:45 [실습] 삼항 조건 연산자 35. 대입 연산자 =, +=, -=, *=, /=, %= 등 대입 연산은 변수의 값을 설정할 때 사용하는 연산이죠. 이러한 이유로 대입 연산의 좌항에는 상수 표현은 올 수 없으며 l- value라 불러요. 대입 연산자에는 우항의 값을 좌항에 대입하는 단순 대입 연산과 좌항과 우항의 값을 더하거나 빼..

Part 10. 비트 연산자와 쉬프트 연산자

C언어 - 비트 연산자, 쉬프트 연산자 00:19 비트 연산자 01:22 [실습] 비트 연산자 02:44 xor 연산을 이용한 대칭형 암호화 03:28 [실습] xor 연산을 이용한 대칭형 암호화 05:46 쉬프트 연산자 07:00 [실습] 쉬프트 연산 32. 비트 연산자 & | ^ ~ C언어에서는 비트 단위로 논리 연산을 수행하는 비트 연산을 제공하고 있어요. 비트 연산의 피연산자는 정수 형식이 올 수 있어요. 이항 연산자 &는 비트 단위로 논리곱 연산을 수행하죠. 예를 들어 6&5를 하면 6은 이진수로 110이고 5는 이진수로 101이므로 6&5의 연산 결과는 이진수 100이고 10진수 4예요. 이항 연산자 | 는 비트 단위로 논리합 연산을 수행하죠. 예를 들어 6|5의 연산 결과는 이진수 111 이..

Part 9. 산술, 논리, 비교 연산자

[C언어] 산술, 논리, 비교 연산자 00:19 산술 연산 00:35 [실습] 부호 연산 01:35 [실습] 사칙 연산 04:05 [실습] 나머지 연산 05:32 논리 연산자 05:46 [실습] 논리 연산 07:18 [실습] 논리 연산에서 주의할 점 09:03 비교연산자 09:18 [실습] 비교 연산자 10:01 비교 연신에서 주의할 점 29. 산술 연산자 프로그래밍 언어는 관리해야 할 데이터를 위한 문법도 제공하지만 수행해야 할 코드를 작성하는 문법도 제공하죠. 이번에는 C언어에서 수행할 코드를 작성하는 가장 기본적인 문법인 연산자를 다룰게요. C언어에서는 사칙 연산이나 논리 연산, 비트 연산을 비롯하여 30여 가지의 연산자를 제공하고 있어요. 여러분은 책에 나온 예제 코드를 직접 작성하여 하나 하나 ..

Part 7. 실수 표현과 메모리 구조

C언어 - 실수 표현과 메모리 구조 19. 실수는 근사치 0.1에서 0.5사이에 몇 개의 실수가 있을까요?\ 여러분이 아는 것처럼 무한 개의 실수가 존재하죠. 따라서 0.1과 0.5 사이의 모든 실수를 유한한 메모리에 표현할 수 없어요. 실제로 컴퓨터에서 실수 표현은 오차 범위 내에서 값을 표현하는 근사치예요. C언어에서는 실수 형식으로 float 형식과 double 형식을 제공해요. float 형식은 4바이트이며 double 형식은 8바이트예요. 그리고 C언어에서 실수 표현은 기본적으로 double 형식으로 취급하며 float 형식을 표현할 때는 뒤에 f를 붙여요. 그렇지만 C언어에서 실수 형식 사이에는 서로 묵시적 형변환을 제공해서 실수 뒤에 f를 붙이지 않아도 가능하답니다. 물론 값 잘림 현상이 발..

Part 6. 정수 형식의 표현 범위와 Overflow 값 잘림 현상

[C언어] Part 6. 정수 형식의 표현 범위와 Overflow 값 잘림 현상 17. 정수 형식의 표현 범위 char 형식과 unsigned char 형식은 정수를 표현할 때도 사용할 수 있다고 했어요. 두 가지 형식 모두 1바이트를 할당하여 256가지의 정수를 표현할 수 있답니다. unsigned char 형식은 부호 없는 정수만 표현하므로 0~0xFF(0~255)까지 표현 가능해요. char 형식은 최상위 비트가 0인 0x00~0x7F(0~127)까지는 부호없는 정수예요. 그리고 최상위 비트가 1인 0x80~0xFF(-128~-1)까지는 부호있는 정수죠. ◈ char 형식과 unsigned char 형식의 표현 범위 확인 #include int main() { char c = 0; unsigned ..

Part 5. 문자 형식과 ASCII 코드

Part 5. 문자 형식과 ASCII 코드 15. ASCII 코드 C언어 - 문자 형식과 ASCII 코드 C언어에서 char 형식은 -128~127까지의 정수를 표현할 수 있는 정수 형식이예요. 형식 이름을 보면 알 수 있듯이 char 형식은 문자를 표현할 때 많이 사용하죠. 미국 표준 기구(ANSI, American National Standards Instutitute)에서는 영문 알파벳과 숫자 문자와 여러 기호를 아스키 코드로 정의했어요. 아스키 코드에는 128개의 문자를 약속하고 있답니다. 최초의 아스키 코드는 하드웨어 사이에서 주고 받는 신호를 약속한 것으로 제어 신호도 포함하고 있어요. char 형식이 8비트(1바이트)죠. 첫번째 비트는 0이고 나머지 비트를 아스키 코드를 이용하여 표현해요. ..

Part 4. 부호 있는 정수 표현 방법

Part 4. 부호 있는 정수 표현 방법 12. 부호 있는 정수 표현 - 부호 비트 필드 C언어 부호있는 정수 표현, 부호 비트 필드, 1진 보수, 2진 보수 메모리에 부호있는 정수를 표현하는 방법은 여러가지 방법이 있어요. 그 중에 대표적인 방법이 부호비트 필드 방식, 1진 보수 방식, 2진 보수 방식이 있죠.(C언어의 정수 형식은 2진 보수 방식을 사용하고 있어요.) 이제 이 세가지 방법을 알아봅시다. 먼저 부호 비트를 이용하는 방법을 알아볼게요. 부호비트 필드 방식에서는 첫 번째 비트를 부호비트로 사용하는 방식이예요. 첫 번째 비트가 1이면 부호있는 정수이고 0이면 부호없는 정수인 것이죠. 그리고 나머지 비트는 크기를 나타내요. 예를 들어 8비트의 메모리에 10010001 값이 들어있다면 첫번째 비..

Part 3. 형식과 메모리 크기, 진수 표현

Part 3. 형식과 메모리 크기, 진수 표현 [디딤돌 C언어] Part 3. 형식과 메모리 크기, 진수 표현 9. 기본 형식(TYPE) 프로그래밍 언어에서는 데이터를 표현하는 문법으로 형식과 변수를 제공해요. 형식은 데이터의 종류와 표현 범위에 따라 메모리 크기와 범위를 약속하고 있어요. 실제 메모리가 필요할 때 형식을 지정하여 변수를 선언하면 약속한 메모리를 할당받아 사용할 수 있어요. C 언에에서 제공하는 형식에는 문자, 정수, 실수를 표현할 때 사용하는 기본 형식이 있어요. 그리고 여러개의 원소를 연속적인 메모리에 할당받아 사용하는 배열과 프로그램의 메모리 주소를 기억하는 포인터도 있죠. 이 외에 개발자가 프로그램에 필요한 형식을 정의하는 문법을 제공합니다. 개발자가 정의하여 사용하는 형식을 사용..

Part 2. 첫 번째 프로그램 Hello, World!

[디딤돌 C언어] Part 2. 첫 번째 프로그램 Hello, World! 6. 첫 번째 프로그램 만들기 이제 처음으로 간단한 프로그램을 만들어 봐요. 프로그램 언어를 공부할 때는 머리로 이해하는 것도 필요하지만 받드시 개발 도구에서 만들어 보는 것이 필요해요. 책의 내용을 머리로 이해했다고 만족하지 마시고 개발도구로 만들어 보세요. 이번에 만들 프로그램은 콘솔 화면에 “Hello, World”를 출력하는 프로그램이예요. 여러분은 이 과정을 통해 개발 도구에서 C언어로 프로그램을 만드는 과정을 익힐 수 있어요. 그리고 C언어의 문법 요소도 간단히 살펴볼 수 있답니다. 여기에서는 Microsoft Visual Studio 2022 개발 도구를 사용할게요. (2023년 12월 26일 현재 동영상에서는 Vis..

스택을 연결리스트로 구현

1. 유튜브 동영상 강의 2. 개요 및 알고리즘 안녕하세요. 언제나 휴일입니다. 이번에는 스택(STACK)을 연결리스트로 구현하는 소스 코드입니다. 스택은 자료를 한쪽으로 보관하고 꺼내는 LIFO(Last In First Out) 방식의 자료구조입니다. 스택에 자료를 보관하는 연산을 PUSH라 말하고 꺼내는 연산을 POP이라고 말합니다. 그리고 가장 최근에 보관한 위치 정보를 TOP 혹은 스택 포인터라 말합니다. Push 연산 IF Top> MAX Then (꽉 차면) Overflow (버퍼 오버플로우) Else (꽉 차지 않을 때) Top = Top +1 (Top 위치를 1 증가) Buffer[Top] = data (버퍼의 Top 위치에 data 보관) Pop 연산 IF Top=-1 Then (비었으면..

1. 소개 [경로찾기 프로젝트 – C#, 카카오 지도 API, SK TMAP API 활용 ]

안녕하세요. 언제나 휴일입니다. C# 언어로 카카오 개발자 센터의 지도 및 지역 API, SK TMAP API를 이용하여 경로 찾기 프로젝트를 만드는 과정을 다룹니다. 제작에 앞서 작성할 프로그램의 기능을 소개하려고 합니다. 경로 찾기 프로젝트 소개 작성할 프로그램 소개 작성할 프로그램은 C#, Windows Forms 앱[.NET Framework]입니다. 먼저 출발지 경로를 입력하여 경로 탐색 결과 중에 하나의 항목을 선택합니다. (카카오 개발자 센터 지역 검색 API 사용) 그리고 목적지도 입력하여 경로 탐색 결과 중에 하나의 항목을 선택합니다. (카카오 개발자 센터 지역 검색 API 사용) 경로 찾기 버튼을 클릭하면 출발지에서 목적지까지의 경로를 탐색합니다. (SK TMAP API 이용) 탐색한 ..

OpenAPI/C# OpenAPI 2024.01.09

2. 지역 검색 예광탄 [경로찾기 프로젝트 – C#, 카카오 지도 API, SK TMAP API 활용 ]

안녕하세요. 언제나휴일입니다. 1. 유튜브 동영상 강의 지역 검색 예광탄 이전 글에서 경로찾기 프로젝트를 소개하였습니다. 경로찾기 프로젝트를 구현하기 위해서는 여러 개의 요소 기술을 사용할 수 있어야 합니다. 그 중에 카카오 개발자 센터의 지역 API를 사용하여 검색 질의에 해당하는 지역 정보를 조사할 수 있어야 합니다. 이번에는 이를 익히기 위해 지역 검색 예광탄을 만들어 보기로 할게요. (C#, 카카오 개발자센터 – 로컬 API 사용) 2. 개발에 필요한 작업 카카오 개발자 센터에 내 애플리케이션을 추가합니다. 추가할 애플리케이션 정보를 입력합니다. 앱 이름과 사업자명은 원하는 명칭을 입력해도 무관합니다. 앱 키 중에 REST API키는 지역 검색에서 사용합니다. 그리고 다음에 지도 API를 사용할 ..

OpenAPI/C# OpenAPI 2024.01.09

.NET 리모팅 [C#]

1. 유튜브 동영상 강의 2. .NET 리모팅이란? .NET 리모팅 기술은 서버 측에 있는 개체를 클라이언트 측에서 마치 자신에게 있는 개체를 사용하는 것처럼 사용할 수 있게 서비스를 하는 기술입니다. .NET 리모팅 서비스를 위해서는 서비스를 제공하는 서버와 서비스를 제공받는 클라이언트가 필요하며 서버 측에서 클라이언트에 제공하는 개체를 정의한 클래스 라이브러리가 필요합니다. 서버 측에서 클라이언트에 제공하는 개체는 MashalByReference에서 파생한 개체로 원격 개체라고 말합니다. 서버 측에서는 채널을 등록하여 원격 개체를 사용할 수 있게 등록합니다. 클라이언트 측에서는 서버 측 채널에 접근하여 원격 개체를 참조하여 사용하는데 클라이언트 측에서 원격 개체를 참조하여 사용할 수 있는 개체를 Pr..

P2P 메신저 – 파일 송수신 기능 구현 [C#]

1. 유튜브 동영상 강의 안녕하세요. 언제나 휴일에 언휴예요. 이번에는 P2P 메신저의 파일 송수신 기능을 구현할 거예요. 이미 P2P 메신저 – 숏 메시지 송수신 예광탄은 구현했어요. 그리고 P2P 메신저 - 파일 전송 클라이언트와 P2P 메신저 - 파일 수신 서버도 구현했죠. 이번 강의에서는 파일 전송 클라이언트와 파일 수신 서버를 라이브러리를 만들고 이를 참조하여 P2P 메신저에 파일 송수신 기능을 구현할 거예요. 파일 송수신 라이브러리에 사용할 소스 코드는 앞에서 제작한 파일 전송 클라이언트와 파일 수신 서버에 있는 소스 코드를 그대로 사용합니다. 2. 컨트롤 추가 배치 먼저 Form1에 자신의 파일 수신 서버 포트와 전송할 때 상대 파일 수신 포트를 입력할 텍스트 상자를 추가합니다. 그리고 설정..

[C#] 원격 제어 프로그램 1. 개요

1. 유튜브 동영상 강의 2. 소개 이 책에서는 C# 언어로 Windows Forms 응용 프로그램 형태로 원격 제어 프로그램을 만드는 전체 과정을 다루고 있습니다. 여기에서 만드는 원격 제어 프로그램은 P2P 방식으로 제어하는 부분과 제어 당하는 부분을 포함하는 프로그램입니다. 프로그램을 시작하면 [그림 1]처럼 원격 제어기 창이 뜨고 제어를 원하는 상대 IP 주소를 입력하여 설정하기 버튼을 클릭합니다. 원격 호스트에서는 [그림 2]처럼 원격 제어 요청을 한 컨트롤러의 주소가 보이면서 원격 제어 허용 버튼의 상태를 활성화합니다. 원격 제어 허용 버튼을 누르면 원격 컨트롤러에서 원격 제어를 시작할 수 있습니다. 이 프로그램을 만드는 과정에서 여러분께서는 Windows Forms 응용 프로그램을 만드는 방..

[C#] 원격 제어 프로그램 5. 원격 제어 요청 수신 이벤트

1. 유튜브 동영상 강의 *동영상 강의에서는 라이브러리로 제작합니다.* 2. 원격 제어 요청 수신 이벤트 원격 제어 요청을 수신하여 수락 혹은 거절하는 SetupServer에서는 상대측에서 원격 제어 요청이 온 시점을 알아야 합니다. 이를 위해 이벤트 처리를 할 수 있게 대리자와 이벤트 인자 형식을 정의합시다. 이벤트 처리에 사용할 인자는 EventArgs 클래스를 기반으로 파생 클래스로 정의하는 것을 권해요. public class RecvRCInfoEventArgs : EventArgs { 누가 요청했는지 접근할 수 있게 IPEndPoint 속성을 제공합시다. public IPEndPoint IPEndPoint { get; 설정자는 내부에서만 접근할 수 있게 private으로 접근 지정하세요. pri..

P2P 메신저 - 파일 수신 서버 구현 [C#]

1. 유튜브 동영상 강의 이번 강의는 파일 수신 서버 구현 실습이예요. 이전 글(P2P 메신저 - 파일 전송 클라이언트 구현 [C#]) 이 필요하겠네요. 2. 이벤트 인자 및 대리자 소스 코드 2.1 연결 요청 수락 이벤트 인자 및 대리자 using System; using System.Net; namespace 파일_수신_서버 { public delegate void AcceptedEventHandler(object sender, AcceptedEventArgs e); public class AcceptedEventArgs:EventArgs { public IPEndPoint RemoteEndPoint { get; private set; } public string IPStr { get { return..

P2P 메신저 - 파일 전송 클라이언트 구현 [C#]

1. 유튜브 동영상 강의 안녕하세요. 언제나 휴일에 언휴예요. 이번 강의는 파일 전송 클라이언트를 구현하는 실습입니다. 파일 전송 및 수신에 필요한 서버와 클라이언트는 P2P 메신저를 구현할 때 필요한 요소 기술입니다. 먼저 익히고 넘어갈게요. 다음글 P2P 메신저 - 파일 전송 클라이언트 구현 [C#] 도 같이 학습하세요. 2. 파일 데이터 전송 이벤트 인자 및 대리자 소스 코드 using System; namespace 파일_전송_클라이언트 { public delegate void SendFileDataEventHandler(object sender, SendFileDataEventArgs e); public class SendFileDataEventArgs:EventArgs { public stri..

P2P 메신저 – 숏 메시지 송수신 예광탄 구현하기 [C#]

1. 유튜브 동영상 강의 안녕하세요. 언제나 휴일에 언휴예요. 이번 강의는 P2P 메신저 중에서 숏 메시지 송수신 부분을 구현할 거예요. P2P 프로그램은 Peer와 Peer 사이의 통신을 하는 프로그램을 말하죠. 전통적인 네트워크 프로그래밍에서 사용자가 사용하는 응용을 클라이언트, 서비스 제공하는 응용을 서버라고 부르죠. 그런데 P2P 프로그램에서 사용자가 사용하는 Peer는 특정 네트워크 서비스를 서버를 거치지 않고 Peer끼리 직접 주고 받습니다. 이를 위해 특정 서비스의 서버 부분과 클라이언트 부분이 Peer 부분에 구현합니다. 이번 강의는 이러한 특징을 갖는 P2P 프로그램 중에 Short 메시지를 주고 받는 부분을 구현합니다. 2. 화면 배치 숏 메시지 송수신 예광탄 프로그램에서는 자신의 IP..

[C#] 테트리스 만들기 – Part 4(Final). 꽉 찬 줄 지우기, Ending

프로젝트 다운로드 프로젝트 다운로드 -벽돌 모양에 따라 색상 변경 기능 추가 1. 유튜브 동영상 강의 안녕하세요. 언제나 휴일에 언휴예요. 이번 강의는 테트리스 프로젝트의 마지막 부분입니다. 이번 강의에서는 꽉 찬 라인을 지우는 기능과 종료 조건을 체크하는 부분을 구현합니다. 2. Board 형식 수정 Store 메서드에 라인이 꽉 찼는지 확인하는 메서드를 호출합니다. 이 때 주의할 점은 라인 체크는 아래부터 한다는 것입니다. 벽돌이 4X4공간에 배치하므로 벽돌이 있는 좌표에서 3칸 더 있다는 것을 고려하세요. internal void Store(int bn, int turn, int x, int y) { for (int xx = 0; xx < 4; xx++) { for(int yy = 0; yy=0)&..

TCP 통신 – Echo 서버 클래스 구현, 이벤트 정의 및 콜백 처리 [C#]

1. 유튜브 동영상 강의 이번 실습은 Echo 서버 클래스를 구현하는 실습이예요. 여기서 만들 서버 클래스는 라이브러리로 제작하기 위한 목적으로 사전 작업하는 것이예요. 서버 클래스를 사용하는 곳에서 연결 수락 및 닫기, 메시지 수신에 관한 이벤트 처리를 할 수 있게 정의합니다. 대리자 및 이벤트 인자를 정의하고 Echo 서버에 이벤트 멤버를 정의하여 콜백 처리를 하는 것이죠. 2. 연결 수락 이벤트 인자 및 대리자 소스 코드 using System; using System.Net; namespace 에코_서버_응용___클래스로_정의 { public delegate void AcceptedEventHandler(object sender, AcceptedEventArgs e); public class Ac..

TCP 통신 – echo 서버 및 클라이언트 구현 [네트워크 프로그래밍 C#]

1. 유튜브 동영상 강의 이번 실습은 TCP 통신의 기본 절차를 확인하는 실습입니다. 실습 소재는 echo 서비스입니다. 클라이언트에서 전송한 메시지를 다시 반송하는 서비스를 제공합니다. 2.TCP 통신 절차 TCP 프로토콜을 이용한 통신은 서버와 클라이언트 사이에 연결을 형성한 후에 스트림 방식으로 패킷을 송수신합니다. 스트림 방식의 통신에서는 전송한 패킷의 순서대로 도착하며 패킷 전송 중에 전송이 실패하면 다시 전송하여 신뢰성을 보장하는 방식입니다. TCP 통신에서 서버의 절차는 다음과 같습니다. 소켓 생성(대기 소켓) Bind: 소켓 – 네트워크 인터페이스와 결합 Listen: 백 로그 큐 크기 설정 반복 – Accept:클라이언트 연결 요청 대기 및 수락(송수신 소켓 반환) 클라이언트와 데이터 송..

병합 정렬(합병 정렬, Merge Sort) 알고리즘

1. 유튜브 동영상 강의 병합 정렬 알고리즘 동영상 강의 2. 알고리즘 이번에는 병합 정렬 알고리즘을 살펴봅시다. 병합 정렬 알고리즘은 배열을 작은 단위의 배열로 분할한 후에 분할한 배열을 정렬하고 이들을 다시 정렬하면서 전체 배열을 정렬하는 알고리즘입니다. 병합 정렬(base:배열의 시작 주소, n: 원소 개수, compare:비교 논리) ah:= n/2 bh:= n – ah; 조건(n이 1보다 작거나 같으면) 종료 병합정렬(base,ah,compare) 병합접열(base+ah,bh,compare) tbase에 동적 메모리 할당(원소크기*원소개수) 메모리 복사(tbase,base) ai:=0 bi:=ah i:=0 반복(ai가 ah보다 작으면서 bi가 n보다 작다) 조건(tbase[ai]가 tbase[b..

퀵 정렬 (Quick Sort)

1. 유튜브 동영상 강의 퀵정렬 유튜브 동영상 강의 2. 퀵정렬 알고리즘 퀵 정렬 알고리즘은 피벗 값을 선택하여 피벗 값보다 작은 값들은 왼쪽으로 보내고 큰 값들은 오른쪽으로 보낸 후에 이들 사이에 피벗을 위치시키는 원리를 이용합니다. 이후 피벗보다 작은 값들을 재귀 호출로 정렬하고 피벗보다 큰 값들도 재귀 호출로 정렬하는 방식입니다. 그런데 퀵 정렬은 어떠한 요소를 피벗으로 선택하냐에 따라 성능에 차이가 납니다. 만약 전체 요소의 중간 순위의 요소를 선택하면 재귀 호출에서 반씩 나누어 정렬을 하게 되어 좋은 성능을 발휘합니다. 하지만 가장 작은 값이나 가장 큰 값을 피벗으로 선택하면 최악의 성능을 발휘합니다. 여기에서는 맨 앞과 맨 뒤, 그리고 중간 위치의 요소를 비교하에 세 값 중에 중간 값을 피벗으..

삽입 정렬 (Insertion Sort)

1. 유튜브 동영상 강의 1.1 삽입 정렬 알고리즘 삽입 정렬 알고리즘 1.2 삽입 정렬 알고리즘 구현 삽입 정렬 알고리즘 구현 2. 삽입 정렬 알고리즘 이번에는 반복 알고리즘 중에 삽입 정렬 알고리즘을 알아봅시다. 삽입 정렬 알고리즘은 점진적으로 정렬 범위를 넓혀 나가는 방식으로 정렬하는 알고리즘입니다. 이를 위해 새로운 범위에 포함하는 마지막 원소를 앞으로 이동하면서 자신보다 작은 요소를 찾을 때까지 이동하면서 자리를 교환합니다. 삽입 정렬(base:컬렉션, n:원소 개수, compare:비교 논리) 반복(i:=1; i0 ; j:=j-1) 조건(compare (base [j-1], base [j]) < 0) temp: = base [j-1] base[j-1] = base [j] base[j] = te..

선택 정렬 (Selection Sort) 알고리즘

1. 유튜브 동영상 강의 1.1 선택 정렬 알고리즘 선택 정렬 알고리즘 동영상 강의 1.2 선택 정렬 알고리즘 구현 선택 정렬 알고리즘 구현 동영상 강의 2. 알고리즘 이번에는 반복 알고리즘일 이용하는 선택 정렬 알고리즘을 알아봅시다. 선택 정렬 알고리즘은 제일 큰 값을 찾아 맨 뒤의 요소와 교체하는 방법을 반복하여 전체를 정렬하는 알고리즘입니다. 물론 제일 작은 값을 찾아 맨 앞의 요소와 교체하는 방법을 반복할 수도 있습니다. 선택 정렬 알고리즘을 의사코드(pseudo code: 논리적인 수행 흐름을 이해할 수 있게 작성한 코드)는 다음과 같습니다. 선택 정렬(base:컬렉션,n:원소 개수,compare:비교 논리) 반복(i:=n; i>1 ; i:= i-1) 반복(max=0,j:=1; j1; i--)/..