zenn.skin 무료버전 배포중!
자세히보기

CS 30

CS/Network
[Network] NAT, PAT (Network Address Translation, Port Address Translation)

1. NAT(Network Address Translation) NAT는 IPv4에서 부족한 IP 주소의 수를 보완하기 위해 사용하는 프로토콜로, 로컬 네트워크의 IP 주소를 외부 네트워크 IP 주소에 매핑해주는 역할을 합니다. NAT를 사용하면 하나의 IP 주소 내에서 여러개의 사설 IP 주소를 사용할 수 있습니다. 네트워크 외부에서 볼 때는 하나의 공인IP이지만 로컬네트워크에서는 각각의 host들이 사설 IP 주소를 가지고 있습니다. 사설 IP 주소들은 외부 네트워크에서 라우팅되지 않고 라우터를 거쳤다 라우팅되기 때문에 외부 네트워크로부터 보호할 수 있는 장점이 있습니다. 다만 너무 많은 주소 변환이 일어나면 속도가 저하되는 단점이 있습니다. 집에 있는 컴퓨터에서 ipconfig 명령어를 통해 ip주..

CS/Network
Cloud Computing

아래는 NIST에 올라온 cloud computing에 대한 정의에 대한 내용입니다. http://faculty.winthrop.edu/domanm/csci411/Handouts/NIST.pdf 글을 읽고 cloud computing에 대해 정리해보려 합니다 Cloud computing 클라우드 컴퓨팅은 어디서든 접근 가능한 on-demand 네트워크 방식의 네트워크 모델입니다. 클라우드 컴퓨팅은 네트워크나 서버, 스토리지, 서비스 등을 공유하기 위해 사용됩니다. 빠른 시간 안에 프로비저닝과 배포를 가능하게 한다는 장점이 있습니다. 클라우드 모델은 5가지 특성, 3가지 서비스 모델 그리고 4가지 구축 모델로 설명할 수 있습니다. 1. 클라우드 컴퓨팅의 특성 1) 사용자 필요에 따른 서비스 맞춤화 (on-..

CS/Network
[Network] TCP/IP Model

1. TCP/IP Model OSI 7 Layer 모델처럼 전체 네트워크의 통신 과정을 개념적으로 모델링한 네트워크 모델입니다. OSI 7 Layer 모델과 비교해 많이 설명되는데, TCP/IP 모델은 1970년대에 개발되었고, OSI 7 Layer는 1984년에 개발되었기 때문에 두 모델이 정확히 일치하지 않습니다. 응용계층, 표현계층, 전송계층의 역할을 Application Layer(응용계층)이 수행하고 데이터링크계층, 물리계층의 역할을 Network Interface Layer(네트워크 인터페이스 계층)이 수행합니다. 2. 각 계층별 설명 ① Network Interface Layer(네트워크 인터페이스 계층) OSI 7 Layer의 데이터링크층과 물리계층이 해당합니다. 전기적 신호를 전달하는 랜..

CS/Network
[Network] OSI 7 layer Model

1. OSI 7 layer OSI 7 layer는 네트워크 시스템을 7개의 층으로 나누어 설명하는 개념적인 모델입니다. 과거에는 업체에 따라 서로 다른 프로토콜(통신 규약)과 기기를 사용했기 때문에 서로 다른 소프트웨어나 기기 간에는 통신이 안되는 문제가 있었습니다. 이러한 통신 문제를 해결하기 위해서는 규격의 통일이 필요했는데, 이것이 OSI 7 Layer 모델입니다. 전체 네트워크 시스템을 기능에 따라 여러 개의 층으로 나누고 해당하는 층의 통신규격을 맞추면 서로 다른 기기간에도 통신을 할 수 있게 됩니다. 각 층들은 서로 독립적으로 역할을 수행하기 때문에 다른 층에 영향을 받지 않습니다. 프로토콜을 개발할 때도 해당하는 layer외에 다른 layer와 독립적이기 때문에 개발에 용이하고 유지보수면에서..

CS/알고리즘
[Python] lower bound, upper bound 구현

전에 파이썬의 bisect 라이브러리의 bisect_left와 bisect_right을 다룬 적이 있었습니다. 그 때는 기본적인 함수의 동작방식과 사용방법에 대해서만 공부해봤는데 최근에 LIS 문제를 다시 풀어보면서 lower bound를 다시 공부할 기회가 생겼었습니다. 오늘은 직접 bisect_left, bisect_right를 구현해보려 합니다. 오늘 게시물을 보기 전에 아래 게시물에서 lower bound와 upper bound에 대해 읽어보고 오시길 추천드립니다. 간단하게 lower bound: target "이상(target 포함o)"이 처음 나오는 위치 upper bound: target"보다 큰(target 포함x)" 값이 처음 나오는 위 [Python] bisect 라이브러리 (lower..

CS/알고리즘
[Python] 피보나치 수열과 Dynamic Programming 기초

1. 피보나치 수열 피보나치 수는 첫째 항과 둘째 항이 1이고 뒤에 나오는 모든 항이 앞 두 항의 합인 수열이다. 앞의 두항의 합만 구하면 다음 항을 구할 수 있으므로 코드로 구현하면 다음과 같이 간단하게 표현할 수 있다. N = int(input()) def fibo(x): if x == 0: return 0 if x == 1: return 1 return fib(x - 1) + fib(x - 2) print(fibo(N)) 하지만 이 코드에는 큰 문제점이 있는데... 앞서 구했던 피보나치 수의 값을 기억하질 못한다... N=5라고 할 때 피보나치 수를 구하면 위와 같다. 동일한 계산을 여러 번하는데 전에 이미 값을 구했는데도 하위 연산을 하면서 값을 다시 구한다. 값이 하나 증가할 때마다 연산의 횟수..

CS/알고리즘
[Python] bisect 라이브러리 (lower bound, upper bound)

bisect 라이브러리에 있는 bisect_left, bisect_right에 대해 공부하려 합니다. 1. bisect? - 정렬된 리스트에서 이진 탐색을 이용해 데이터를 찾는 메서드를 제공 - O(logN)의 시간 복잡도로 데이터를 찾을 수 있다 - bisect_left는 lower bound로, bisect_right는 upper_bound로 사용할 수 있다 2. lower bound와 upper bound bisect 라이브러리에서 제공하는 메서드는 이진 탐색과 완전히 일치하지는 않고 조금 차이점이 있다. 위에서 말한 것처럼 bisect_left는 lower bound 알고리즘을, bisect_right는 upper bound 알고리즘을 수행한다. - binary search: 찾고자 하는 값이 존..

CS/자료구조
[자료구조] 우선순위 큐(Priority Queue)

1. 우선순위 큐 - 우선순위 큐는 각 원소들이 우선순위를 갖고 있는 추상 자료형이다. - FIFO 구조를 갖는 큐와 다르게 우선순위 큐는 들어온 순서와 상관없이 우선순위가 높은 원소가 먼저 나간다. - 원소를 추가하거나 제거할 때 우선순위를 갖고 수행해야 한다. - 우선순위 큐와 힙은 같지 않다. 우선순위 큐는 힙 외에도 배열이나 연결 리스트로도 구현 가능하다. - 배열을 이용해 우선순위 큐를 구현하면 삽입할 때 최악의 경우 시간 복잡도가 O(N)이 된다. (추가하는 위치 이후에 있는 모든 원소들을 뒤로 한 칸씩 옮겨줘야 하기 때문에) - 연결리스트로 구현할 때도 삽입 위치를 찾을 때 최악의 경우 O(N)이 소요되기 때문에 배열이나 연결 리스트보다는 힙을 이용한 우선순위 큐가 훨씬 효율적이다. 2. 힙..

CS/자료구조
[자료구조] 힙(Heap)

1. 힙? - 힙은 최댓값이나 최솟값을 하기 위해 사용되는 완전 이진트리 형태의 자료구조이다. - 부모 노드는 항상 자식 노드보다 더 높은 우선순위를 가진다. - 힙은 완전 이진트리로 정렬된 구조가 아니다. - 부모 노드가 자식 노드보다 항상 작은 힙을 최소 힙, 부모 노드가 자식 노드보다 큰 힙을 최대 힙이라 한다. - 형제 노드 간의 대소 관계가 보장되는 이진 탐색 트리와 다르게 힙은 형제 노드 간의 대소 관계는 보장되지 않는다. - 힙은 부모 노드와 자식 노드 간의 대소 관계만을 보장한다. - 우선순위 큐와 힙은 다른 개념이다. 우선순위 큐는 각 원소들이 우선순위를 갖는 추상적인 자료형으로 여러 방법으로 구현할 수 있는데 그중에서 힙을 많이 사용하는 것이다. 2. 최소 힙과 최대 힙의 비교 파이썬에..