반응형

<개인공부> 261

[C언어/C++] clock 함수를 통한 알고리즘 시간 측정

안녕하세요.BlockDMask 입니다.오늘은 "내가 짠 알고리즘이 어느정도 시간이 걸렸나?" 라는 것을 알 수 있게 시간을 잴 수 있는 코드에 대해서 알아보겠습니다. 1. clock() 함수C 언어 에서는 , C++ 에서는 헤더파일에 들어있습니다.기본형 clock_t clock(void); //프로그램이 시작하고 나서 부터 프로세서가 소모한 시간을 리턴합니다. return 타입인 clock_t는 clock ticks 를 뜻합니다.CLOCKS_PER_SEC는 메크로 인데 clock_t 의 값을 CLOCKS_PER_SEC으로 나누면 소모한 시간(clock ticks per second)이 나옵니다.2. 사용 방법123456789101112131415161718192021#include#include#incl..

퀵 정렬 (Quick Sort) 이론과 코드

안녕하세요. BlockDMask 입니다. 오늘은 지난시간에 언급 한 대로 퀵 정렬, 퀵 소트(Quick Sort)에 대해 알아보겠습니다.부족한 부분이나 이상한 부분이 있으면 댓글 부탁드리겠습니다. 0. 원리Quick sort(퀵 소트)는 divide and conquer (분할 정복) 방식으로 정렬을 수행합니다.Quick sort(퀵 소트)는 n 개의 데이터를 정렬할때, 평균적으로 O(nlogn) 번을 수행하고 최악의 경우 O(n^2) 번을 수행합니다.평균적으로 log 의 시간복잡도를 가지기 때문에 다른 정렬 알고리즘에 비해 속도가 빠르므로, 사용빈도가 높습니다. 과정 : 리스트에서 임의의 원소를 고릅니다. 그것을 pivot이라 합니다. (일반적으로 가운데 원소를 고릅니다.) : pivot의 앞에는 pi..

[데통] 프로토콜(Protocol) 이란?

안녕하세요 BlockDMask 입니다.오늘은 "프로토콜(Protocol) 이란 무엇인가?" 에 대해 알아보겠습니다. > 프로토콜(Protocol)이란?정의 - 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 통신 프로토콜은 신호 체계, 인증, 그리고 오류 감지 및 수정기능을 포함할 수 있다. (위키백과) - 통신 프로토콜은 통신(데이터를 주고 받는) 상호간에 미리 약속된 규칙, 규약입니다. - 송신자와 수신자 사이에 "데이터 구조는 이런식으로하고", "그건 이런의미이고", "속도는 어느정도로 보내고" 그런식으로 보내기로하자. 라고 약속을 한 것 입니다. - 비유를 하자면, 어디 기업에 내 이력서를 보낸다고 할때 메모장에 그냥 줄 글로 한자 ..

[데통] Wireshark (와이어샤크) 사용방법

1. 와이어샤크 화면 구성 - 와이어샤크 패킷을 캡쳐하게 되면 이렇게 화면이 나옵니다. 1번 영역은 - Packet List(패킷 리스트 영역) 입니다. : No - 패킷의 일련 번호를 표시합니다. (패킷 숫자를 알 수도 있음) : Time - 패킷 캡쳐를 시작하고 걸린 시간을 나타냅니다. : Source - 패킷의 출발지 주소 : Destination - 패킷의 목적지 주소 : Protocol - 프로토콜의 이름 : Length - 패킷의 길이(크기)를 bytes로 나타내줍니다. : Info - 와이어샤크가 스스로 분석하여 packet에서 가장 중요한 정보를 판단해서 보여줍니다.2번 영역은 - Packet Details(패킷 상세 영역) 입니다. : Packet List영역에서 패킷을 선택했을때, 선택..

[C++] sort algorithm 정리 및 예시

안녕하세요BlockDMask 입니다.오늘은 C++ STL 에서 제공하는 알고리즘 중에 sort 알고리즘에 대해 알아보겠습니다.0. sort algorithm sort 알고리즘은 헤더파일에 속해있습니다.sort(start, end)를 이용하여 [start, end) 의 범위에 있는 인자(element)를 오름차순(default)으로 정렬해주는 함수 입니다. start를 포함하고 end를 포함하지 않는 구간. (iterator를 생각하면됩니다.)quick sort(퀵 정렬)을 기반으로 함수가 구현되어있어, 평균 시간복잡도는 n log n 입니다. 따로 quick sort를 구현할 필요 없이 C++ STL에서 제공해주는 sort 함수를 이용하면 편리하게 정렬 할 수 있습니다.1. 원형 및 사용법원형templa..

[데통] Wireshark 란? (+설치방법)

1. wireshark 란? - 위키피디아 : Wireshark is a free and open source packet analyzer. It is used for network troubleshooting, analysis, software and communications protocol development, and education. - 와이어샤크는 network상의 packet을 분석해서 보여주는 무료 오픈 툴(tool)입니다. - packet을 분석하는 일은 wireshark가 하지만, packet을 포착(capture)하는 기능은 다른 도구(libpcap, WinPcap driver)가 진행 합니다. : 패킷 캡쳐 드라이버(WinPcap - 윈도우용, libpcap - 유닉스/리눅스용)가..

[이론] 소켓(Socket)이란?

안녕하세요. BlockDMask 입니다.TCP/IP 소켓 프로그래밍에 대해 알아보겠습니다. > 소켓(Socket)이란? - 소켓을 이용하면 인터넷의 복잡한 하부구조에 대한 세부적인 지식 없이도 손쉽게 네트워크 프로그램을 개발할 수 있다. - TCP/IP 4계층 (네트워크 접속, 인터넷, 전송, 응용 계층)에서 응용계층 바로 아래에 소켓 계층을 만들어서 응용 계층 하위단계의 자세한 내용을 모른다 하더라도 소켓을 이용하면 응용계층만 신경쓰고 네트워크 프로그램을 개발 할 수 있다. - "하위계층 몰라도되니까 응용계층만 생각하고 소켓 가지고 네트워크 개발해라" (뭐 이런 요지에서 UC 버클리 대학에서 만들었다는..?)- BSD 소켓 (Berkeley Software Distribute Socket) : UC 버..

[Linux] 우분투(Ubuntu) 설치하기(2/2)

안녕하세요. BlockDMask 입니다.오늘은 virtual box 에 만들어 놓은 우분투용 가상 머신에우분투 OS를 설치 하는 과정을 포스팅 하겠습니다. 우선 Virtual Box에 우분투용 가상 머신이 있어야 합니다.우분투 iso 파일이 있어야합니다. 준비가 안되신 분들은 [바로가기] 포스트를 확인하시고 준비해주고 와주세요! > 화살표 부분인 [광학 드라이브]부분을 클릭해 줍니다. > 다운받은 우분투(Ubuntu) ISO 파일을 열어 줍니다. > 설치 화면이 뜹니다.언어를 선택해 줍니다. English를 선택하시거나 > 아래를 보면 한국어도 지원이 됩니다 > 설치 중에 업데이트 할건지 체크 하고 Continue > Continue! > 날짜랑 시간의 기준을 알기 위해 위치를 입력해 줍니다. > Key..

[Linux] 우분투(Ubuntu) 설치하기(1/2)

안녕하세요. BlockDMask 입니다.이번시간에는 VM Virtual Box 에 우분투(Ubuntu) 리눅스(Linux)를 설치하는 과정을 살펴보겠습니다. [ Virtual Box에 우분투(Ubuntu) 설치하기!! ] 우선, Virtual Box가 설치 되어있어야 합니다.설치 과정은 [여기] 에 있습니다. 1. 우분투(Ubuntu)를 설치할 가상 머신 만들기 > 새로 만들기를 클릭 합니다. > 우분투를 설치 할 예정이므로 이름, 종류 버전을 알맞게 기입합니다. > 메모리 크기를 지정합니다. 추천해주는 대로 1024MB로 설정합니다. > "지금 새 가상 하드 디스크 만들기"를 클릭 해 줍니다. > 가상 하드 디스크를 만들 것 이므로 2번째 것을 선택해 줍니다. > 용량을 고정크기로 해줍니다. 각각의 장..

[탐색] lower_bound, upper_bound

안녕하세요. BlockDMask 입니다.오늘은 이진탐색과 유사하나 조금 다른 lower_bound 와 upper_bound에 대해 알아보겠습니다.1. lower_boundlower_bound 란? - 이진탐색(Binary Search)기반의 탐색 방법입니다. (배열 또는 리스트가 정렬 되어있어야 한다.) - lower_bound는 찾으려 하는 key값이 "없으면" key값보다 큰 가장 작은 정수 값을 찾습니다. - 같은 원소가 여러개 있어도 상관 없으며, 항상 유일한 해를 구할 수 있습니다. - 구간이 [start, end]인 배열이 있을때, 중간위치의 index를 mid 라고 하면, arr[mid-1] = key 인 최소의 m 값을 찾으면 됩니다. (m>=2) 직접 ..

반응형