<개인공부> 275

[이론] 소켓(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) 직접 ..

[컴퓨터 기초] 데이터의 단위

안녕하세요. BlockDMask 입니다.이번 글에서는 컴퓨터 정보 크기의 단위에 대해 알아보도록 하겠습니다. - 컴퓨터에서 정보를 나타내는 최소 단위는 비트(bit)로써 0과 1로 구성되어있습니다. - 8개의 비트를 묶어서 바이트(byte)라는 단위로 나타내는데 이를 기본 정보처리의 단위로 사용합니다.Kilobyte(KB) / 2^10 / 10^3 2의 10제곱이 1024 이므로 오차는 존재하지만, 10^3인 1000과 비슷하여 단위를 10^3으로 나타냅니다. Megabyte(MB) / 2^20 / 10^6 Gigabyte(GB) / 2^30 / 10^9 Terabyte(TB) / 2^40 / 10^12 Petabyte(PB) / 2^50 / 10^15

[탐색] 이진탐색 (Binary Search) 구현 방법

안녕하세요. BlockDMask 입니다. 알고리즘 코딩 사이트(백준 온라인 저지)에서 '수 찾기' 문제를 풀다가 이진탐색(Binary Search)이 나와서, 이번 기회에 정리를 해볼까 합니다. 1. 이진탐색(Binary Search) 이란.이진 탐색 알고리즘(Binary Search Algorithm)은 오름차순으로 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘 입니다. 오름차순으로 정렬된 리스트의 중간 값을 임의의 값으로 선택하여, 찾고자 하는 Key값과 비교하는 방식으로 돌아가는 알고리즘 입니다. 정렬된 리스트에서만 사용할 수 있다는 단점이 존재합니다. 검색이 될때마다 선형탐색(Linear Search)와는 비교할 수 없게 빨라집니다. 2. 이진탐색(Binary Search)의 시간 복잡도 입..

[Linux] Virtual box 설치하기

안녕하세요. BlockDMask 입니다.윈도우에 virtual box를 설치 한 후 리눅스(Ubuntu)를 설치 하는 것을 작성해보겠습니다.이번 글에서는 윈도우에 Virtual box를 설치하는 방법을 알아보겠습니다. 1. Window OS에 virtual box(가상머신) 설치하기!Oracle에서 제공해주는 VM(가상머신)인 VirtualBox를 설치합니다.아래 URL에 들어가서 Download 클릭!https://www.virtualbox.org/ 클릭을 하면 아래와 같은 화면이 나옵니다> hosts로 지정할 OS를 선택합니다.(=virtual box를 다운받을 컴퓨터의 OS를 선택하면 됩니다!) 저는 Window Desktop에 받을 거기 때문에 Windows Hosts를 클릭해서 다운 받았습니다...

[알고리즘의 정의] Algorithm?

[Algorithm ?] 주어진 문제를 해결하기 위한 단계, 절차 또는 여러 동작의 모임를 말한다. 이 절차에는 입력값과 출력값이 존재해야하며, 유한한 단계를 거쳐서 반드시 종료 되어야 한다. 입력 : 외부에서 제공되는 자료가 0개 이상 존재해야한다.출력 : 적어도 1개 이상의 서로 다른 결과를 내어야 한다.(즉 모든 입력에 하나의 출력이 나오면 안됨)명확성 : 수행 과정은 명확하고 모호하지 않은 명령어로 구성되어야 한다.유한성(종결성) : 알고리즘의 명령어들은 끝이 있는 계산을 수행한 후에 종료해야 한다.(출처-동아출판 중학교 정보책 날짜-2017-7-11)효율성 : 모든 과정은 명백하게 실행 가능(검증 가능)한 것이어야 한다. https://ko.wikipedia.org/wiki/%EC%95%8C%E..

선택 정렬 (Selection Sort) 이론과 코드

안녕하세요. BlockDMask 입니다. 오늘은 간단한 정렬 알고리즘 중에 선택 정렬(Selection Sort)에 대해서 알아 보도록 하겠습니다. 보시다가 이상하거나 궁금한 부분이 있으면 댓글 부탁드리겠습니다. 0. 원리오름 차순 기준일때 해당 하는 배열 안에서 가장 작은 값부터 찾아서 맨 앞부터 정렬 시키는 방법 입니다.그림으로 그려보겠습니다. 주어진 배열(리스트) 중에 최소값을 찾습니다. -> 그 최소값과 맨 앞의 값을 바꾸어 줍니다(swap) -> 바꿔서 fixed 된 값을 제외하고 나머지 배열(리스트) 중에 최소값을 찾습니다. -> 그 최소값과 나머지 배열중에 맨 앞의 값을 바꾸어 줍니다(swap) -> -> -> 쭉쭉쭉. 1. 코드 및 결과 > 코드(C++) 1234567891011121314..

[C++] 레퍼런스, Reference, 참조자

안녕하세요 BlockDMask 입니다. 오늘은 C++의 참조자(Reference)에 대해서 알아보도록 하겠습니다. 0. 레퍼런스(Reference)란? 참조자(Reference)는 변수에 "별명"을 붙인다고 합니다. 그 "별명"을 통해서 변수의 메모리 공간에 접근이 가능합니다. 참조자(Reference) 이름 앞에 "&" 를 붙여서 선언합니다. 참조자(Reference)는 변수에 대해서만 선언이 가능하고, 선언과 동시에 누군가를 참조 해야만 합니다. 참조자(Reference)는 참조의 대상을 바꾸는 것이 불가능 합니다. 참조자(Reference)는 NULL 로 초기화 하는것이 불가능 합니다. int type 변수 a 를 가리키는 int type의 참조자 ref를 선언해 보겠습니다. 123456789101..