#include #include using namespace std; struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} }; class Solution { private: queue q; public: void run(TreeNode* root) { //DFS preOrder(root); cout..
개요 프로그래밍 언어를 배우다 보면 "컴파일러", "인터프리터"라고 들어보게 될 것이다 범용적인 프로그래밍 언어 중 C/C++, Java, Python, Javascript 등이 있다. 이러한 언어들은 모두 고수준의 언어이고,여기서 고수준이란, 사람의 입장에서 쉽게 기계와 소통할 수 있도록 고안된 프로그래밍 언어이다. 반대로 저수준 언어는 사용자의 반대 입장인 컴퓨터가 이해하기 쉬운 기계어가 있다. 기계어는 0과 1로된 언어이고 컴퓨터 실행에 효율적이지만, 사람이 작성하려면 작업량이 어마어마할것이다.. 반대로 고수준 언어는 사람의 일상적인 언어와 가깝고(기계어와 비교해서 상대적으로..) 작성도 훨씬 간단하다(상.대.적.으.로) 사람은 이러한 고수준 언어로 작성하고 작성된 고수준 언어를 컴퓨터가 이해할 수..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dztaT3/btq090F8XAd/WJKqoJTW49arm5tMG19wtk/img.png)
로드 밸런서란? 만약 트래픽을 감당하는 서버가 하나일때, 대량의 트래픽이 발생할 경우, 부하를 감당하지 못할 수 있다. 이 경우 하나의 서버가 아닌 2개 이상의 서버를 두고 트래픽을 분산시켜서 서버를 감당하도록 할 수 있다. 이때 로드 밸런서는 각 서버로 트래픽을 분산시키는 역할을 한다. 로드 밸런서는 클라이언트와 서버의 사이에 위치하여 하나의 서버에 트래픽이 집중되지 않도록 제어하여 서버의 성능을 최대한 사용한다. 로드밸런싱 알고리즘의 종류 Round Robin - 들어온 Request를 차례대로 서버에 분산 처리 Weigthed Round Robin - 각 서버에 가중치를 두고 가중치가 높은 서버(EX. 서버의 성능이 높을경우 가중치를 높게 설정)에 Request를 우선적 으로 배분 Least Con..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ph07z/btqZUWqWlZD/E6KDp0eqvfy3t6BJPxh5ok/img.png)
자료구조 - 데이터의 집합 - 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조 - Code상 효율적으로 데이터를 처리하기위해 데이터의 특성에 따라, 체계적으로 데이터를 구조화 - 상황별 어떤 자료구조를 사용하냐에 따라 코드 효율이 달라진다. 1. 배열(Array) - 여려개의 데이터를 하나의 변수에 관리(연관 데이터를 하나의 변수에 관리할 수 있다.) - 고정된 크기 - 물리적으로 연속적으로 배치되어있음. - Index로 데이터에 접근(논리적인 순서(Index))는 메모리에 저장되는 원소값의 물리적인 순서(메모리)와 동일 - 데이터의 삭제, 삽입시 낭비되는 공간이 없으려면 시프트연산이 동반되어야 함 2. 리스트(List) - 선형 리스트(Linear List), 연결 리스트(Linked List..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cAdKIk/btqZP1NLMw6/LuSocItb0XdOlfVvUGpoc0/img.png)
Big-O Notation이란? - 알고리즘의 효율성을 수학적으로 표기 - 알고리즘 효율성 -> 데이터의 개수(n)이 주어졌을 때 기본연산 횟수를 의미 - 시간 복잡도와 공간복잡도를 나타내는데 주로 사용 (시간복잡도 : 알고리즘의 시간 효율성, 공간복잡도 : 알고리즘의 메모리공간 효율성) 시간 복잡도의 성능 비교 (왼쪽에 위치할수록 효율성이 높음, 최악의 경우를 기준으로 알고리즘의 성능을 판단함) O(1) > O(log n) > O(n) > O(nlog n) > O(n²) > O(2ⁿ) O(1) - input data의 크기와 상관없이, 항상 일정한 시간이 걸림 - stack의 push, pop bool function(vector n){ if(n[0] == 0) return true; return fa..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/n6bIA/btqZTUTgxsP/R56tVcONHtmo0K9OXEuZh0/img.jpg)
OSI 7 Layer Network에서 통신이 일어나는 과정을 7단계로 나눈 것 Data Flow의 이해가 쉽도록 함 표준화를 통한 유지보수가 용이 효율적인 장비 생산/개발이 가능 함 서로 다른 디바이스/시스템간의 통신이 가능 1 ~ 4 계층 - 하위계층(물리적 계층) 5 ~ 7 계층 - 상위계층(논리적 계층) 계층 계층명 설명 7 응용 유저에게 서비스 제공 SMTP, FTP, HTTP 등 유저가 원하는 최종 목표에 해당됨 Protocol : HTTP(HyperText Transfer Protocol), SMTP(Simple Mail Transfer Protocol), FTP(File Transfer Protocol), Telnet 6 표현 데이터의 변환, 압축, 암호화 Protocol : SSL(Sec..
Hardware 1. Device를 구성하는 부품 2. CPU, 메모리카드, I/O장치 등이 있다. Middleware 1. 분산 컴퓨팅 환경에서 다른 기종의 하드웨어, OS, System Architecture, Protocol, DB, Application과 같은 다양한 환경 간 안정적인 중계 역할을 수행하는 System Software를 의미한다. 2. OS와 해당 OS에서 실행되는 응용 프로그램 사이에 존재하는 S/W이다. 3. 공통 서비스, 기능을 Application에 제공하는 S/W이다. 4. 분산 응용 프로그램의 통신 및 Data관리를 가능하게 한다. 5. 응용 프로그램(등)의 사이를 연결하여 Data 통신이 가능하도록 하는 소프트웨어이다. 6 .Data와 Database가 pipe사이를 ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/W9tpr/btqXb2AxoJO/JCnUGMUwpUcTz5jtO2iKX1/img.png)
네트워크(network) 란? 송신자의 메시지를 수신자에게 건달하는 과정으로 한 지점에서 원하는 다른 지점까지 의미 있는 정보를 보다 신속, 정확하게 상대가 이해할 수 있는 방식으로 전달하는 것. 네트워크 분류 거리에 따라 분류 ▪ PAN(Personal Area Network) : 3m이내 인접지역간 통신 ▪ LAN(Local Area Network) : 동일지역(같은 공간을 공유하는)내 고속의 전용 회선으로 연결되어 있는 근거리 영역의 네트워크 ▪ WAN(Wide Area Network) : 광대역 네트워크망, 관련있는 LAN 간의 상호 연결망 ▪ MAN(Metropolitan Area Network) : 음성 영상 등의 데이터 연결을 지원하는 LAN - WAN의 중간 형태 네트워크, 전송범위는 최대..