본문 바로가기

전체 글92

[알고리즘] 퀵 정렬 | Quick Sort | C++코드 해석 병합정렬(Merge Sort)과 함께 기본 정렬알고리즘인 퀵정렬. 병합정렬이 수열을 반으로 쪼개가며 정렬했다면, 퀵정렬은 기준을 두고 기준보다 작은값들, 기준보다 큰값들로 쪼개가며 정렬한다. 병합정렬은 따로 정렬해둔 값을 저장해둘 메모리공간이 필요했다면 퀵정렬은 따로 메모리공간이 필요하지 않다. 하지만 병합정렬은 언제나 시간복잡도가 일정한 반면 퀵정렬은 잡히는 기준에 따라 시간복잡도가 O(n^2)까지 올라갈수있다고한다. 코드는 이러하다. pivot이 기준 값이 되고 i가 pivot의 자리를 찾아준 다고 생각하면된다. 이해하기 쉽게 예시를들어 그림으로 설명해보자면 이런식이다. 2020. 2. 20.
[알고리즘] 병합정렬 알고리즘 | Merge Sort | C++코드 해석 분할정복(Divide and Conquer) 알고리즘을 공부하고있습니다. 병합정렬을 이해해보겠습니다, 우선은 코드는 이렇게 생겼습니다 코드를 이해하기 쉽도록 병합정렬의 개념과 예시그림을 설명하겠습니다! 병합정렬은 분할과 정렬로 나눌수있습니다. 먼저 처음과 끝의 중간에서 두 개로 분할합니다. 이후 분할된 블록들을 계속해서 최소단위까지 분할해줍니다. 8개의 수열을 분할하는 과정을 예로 들면, 이런 식이 됩니다. 코드를 보면 이에 재귀함수를 이용하였는데요, 빨간색 숫자는 재귀함수에 따라 분할이 되는 순서입니다. 재귀함수가 머리아프신분들은 저 순서를 보시면 직관적으로 바로 이해가 되실 거에요! 분할이 끝났으면 5번에서 정렬&병합 한번, 8번에서 한번, 8번 병합이끝나고 6번에 돌아와서 한번, 6번에서 끝나고 2.. 2020. 2. 20.
[네트워크] OSI 7계층 - 전송계층/세션계층/표현계층/응용계층 OSI 7계층이라하면 물리계층(Physical Layer) - 데이터링크계층(DataLink Layer) - 네트워크계층(Nextwork Layer) - 전송계층(Transport Layer) - 세션계층(Session Layer) - 표현계층(Presentation Layer) - 응용계층 (Application Layer) 으로 구성되어 있다 각 계층을 1계층~7계층이라고 부른다. 이번에는 전송계층부터 응용계층까지 각 역할을 알아보려한다. 4. 전송계층 응용프로그램 주소를 포트번호로 이용해 통신을 하는 프로토콜을 제공하는 계층이다. 포트는시스템에 도착한 후 패킷이 찾아갈 응용 프로그램과 통하는 통로 번호로 생각 할 수 있다. 4계층의 대표 프로토콜은 TCP(Transmission Control Pro.. 2020. 2. 10.
[네트워크] OSI 7계층 - 물리계층/데이터링크계층/네트워크계층 다들 많이 들어봤을텐데, 네트워크는 OSI 7계층으로 나누어져있다. 네트워크에 왜 계층구조가 필요할까? 네트워크 구조가 한 덩어리라면, 정보를 주고받을 때 한번에 모든 기능이 실행되어야한다. 다양한 네트워크 장비들을 한번에 통제할 수 있는 프로토콜을 만들어서 데이터를 주고 받기에는 정말 복잡하고 비효율적이다. 공장의 분업화와 같은 개념으로 네트워크 구조도 작은 계층으로 나눈다면, 이를 관리하기 편하다. 초반에 네트워크가 만들어 질때는, 컴퓨터 회사별로 네트워크 계층을 통일하지 않아 서로 다른 컴퓨터 기종끼리는 통신하기 어려워 ISO(International Organiztion for Standardization)에서 다른 기종끼리도 상호 소통이 가능한 표준 네트워크를 제정하자고 요구했고 이로인해 OSI.. 2020. 2. 10.
[네트워크] 프로토콜(protocol)이란? 국제사회에서 통역가가 서로 다른 언어를 번역해 주듯이, 장치 간, 네트워크 간의 소통을 담당하는 통신규약을 프로토콜이라고 한다. 주소 설정, 순서제어, 데이터 대열의 단편화, 재조합 캡슐화, 연결제어, 흐름제어, 오류제어, 동기화, 다중화. 전송서비스 등 네트워크의 전반적인 일을 담당하고 있다고 생각한다. OSI 7계층 속에서 각 계층의 프로토콜은 독립적으로 간주한다 1계층은 1계층 프로토콜, 2계층은 2계층끼리 통신할 수 있는 프로토콜이 있다 대표적인 프로토콜의 예는 인터넷에서 사용되고 있는 TCP/IP 가 있다. 이렇게 생각하면 프로토콜을 이해하기 전에 TCP/IP 가 뭔데 하고, 개념을 이해하려고 예시를 이해하려다 결국 더 깊은 구렁텅이로 빠져버리고 만다 그냥 어렵게 생각하지 말고 앞으로 배울 네트.. 2020. 2. 10.
네트워크 보안이란? 서버 - 서버, 서버 - 클라이언트, 클라이언트 - 클라이언트 간에 네트워크를 통해 정보를 주고 받는다. 이 과정에서, 허락되지 않는 사용자는 정보 내용을 알 수 없게 하고, 허락되지 않은 사용자는 함부로 정보의 내용을 수정할 수 없게 하고, 허락된 사용자가 정보에 접근할 때 방해받지 않도록 하는 것이 네트워크 보안이다. (기밀성/무결성/가용성) 이 과정에서 서버인증/클라이언트인증 절차를 밟게 된다. 2020. 2. 10.
와이파이 공유기와 허브의 차이점 데이터 링크 계층의 패킷 분석하기 실습을 하기위해 컴퓨터 두 대를 허브로 연결하고자 했다. 그런데 어떻게 연결하는 것 인지, 허브가 뭔지, 스위치가 뭔지 분명 개념적으로 네트워크시간에 공부했는데 하나도 이해가 안갔다. 집에는 허브가 분명 있었던것같은데 안보여서 허브와 비슷하게 생긴 와이파이 공유기를 가져왔다. 뭐가 다른걸까하고 알아보니 와이파이공유기는 ip할당이 가능하고, wan(wide area network)선을 꽂는 곳이 있다 반면 허브는 ip할당이 불가능하지만 ip분배가 가능하다고한다. 그래서 공유기로 ip할당을 한다음에 포트가 부족할때 허브에 연결해서 ip분배를 하여 포트를 더 제공할 수 있도록 만드는 것이다. 근데 지금 맥북에 랜선포트가 없다 이더넷어댑터부터 사야겠다 주륵.. 2020. 1. 27.
Mac에서 C++ 코딩하는 법 (Xcode) 1. Xcode를 깔아준다. 다운로드도 오래걸리고 무겁고 귀찮아서 VScode로 C/C++ 코딩을 하려했으나 생각보다 불편해서 그냥 Xcode설치. VScode로 C/C++ 세팅하는 법은 이 블로그가 참고하기 좋았다. https://ldgeao99.tistory.com/203#recentEntries VSCode C/C++ 코딩 초기세팅(Mac) 참고 : https://webnautes.tistory.com/1158 * 내부 콘솔창에서 한글깨짐이 발생하는 문제는 해결하지 못했음. 한글출력이 필요하면 임시방편으로 외부 콘솔을 이용하자. VScode 설치 https://code.visualstudio.c.. ldgeao99.tistory.com 2. Create a new Xcode project 설치가 완.. 2020. 1. 23.