전체 글137 [CS/C++] STL 큐(Queue) 사용법 Queue란? Queue의 사전적 의미는 무엇을 기다리는 사람, 차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미하는데 이처럼 줄을 지어 순서대로 처리되는 것이 큐라는 자료구조이다. 큐는 데이터를 일시적으로 쌓아두기 위한 자료구조로 스택과는 다르게 FIFO(First In First Out)의 형태를 가진다. FIFO 형태는 뜻 그대로 먼저 들어온 데이터가 가장 먼저 나가는 구조를 말한다. Queue는 C++ 표준 라이브러리(Standard Template Library)에 있는 정의 되어 있어 필요할 때마다 만들어 사용하지 않고 include 하여 사용하면 된다. Enqueue : 큐 맨 뒤에 데이터 추가 Dequeue : 큐 맨 앞쪽의 데이터 삭제 Queue의 특징 1. 먼저 들어간 자료가 먼저 나오.. 2023. 4. 11. Chapter 2 어플리케이션 계층 (Application Layer) 2.1 네트워크 응용 프로그램의 원리 ( principles of network applications) Three-tier architecture (3 계층 아키텍처) PAD Client 쪽 Presentation: 사용자 인터페이스와 관련된 부분 Server 쪽 Application: 데이터를 가공하고 비즈니스 로직을 처리하는 역할 Data: 데이터베이스나 파일등의 저장소에 접근하여 데이터를 CRUD 역할 (create, read, update, delete) Client-server architecture client와 server 간에 데이터를 주고받는 형태이다. client는 데이터를 요청해서 받는 쪽이고, server는 데이터를 보내는 쪽이다. Server - client가 언제 데이터를 요청.. 2023. 4. 10. BOJ(2609).cpp 유클리드 호제법 유클리드 알고리즘(Euclidean algorithm)은 2개의 자연수의 최대공약수(Greatest Common Divisor) 를 구하는 알고리즘이다. 비교대상의 두 개의 자연수 a와 b에서 a를 b로 나눈 나머지를 r이라고 했을때 GCD(a, b) = GCD(b, r)과 같고 "r이 0이면 그때 b가 최대공약수이다."(단 a>b) 라는 원리를 활용한 알고리즘입니다. ex) GCD(24,18) -> GCD(18,6) -> GCD(6,0) : 최대공약수 = 6 재귀 함수 활용 int GCD(int a, int b) { if (a > b) { if (b == 0) { return a; } else { return GCD(b, a % b); } } } 반복문 활용 int GCD(int a, int b) { .. 2023. 4. 5. Chapter 1 컴퓨터 네트워크와 인터넷 1.1 인터넷이란 무엇인가? (what is Internet?) Host ( 인터넷의 최종적인 외곽에 달려있는 컴퓨터) = end system (인터넷을 통해 데이터를 송수신 및 서비스 등 역할) = node ( 네트워크 안에 있는 장비) 통신 링크 ( 유선과 무선 형태로 데이터를 전송) 대역폭 ( 전송할 수 있는 데이터의 크기, 속도 등 기준이 되는 것) 패킷 교환 (동일한 데이터를 잘라서 전달) 라우터 ( 고성능 컴퓨터로 패킷의 경로를 결정) 프로토콜: 통신을 하기 위해서 개체 간의 서로가 약속한 규약의 집합체 1.2 네트워크의 가장자리 (network edge) 종단 시스템, 접속 네트워크, 링크 접속 네트워크 접속망이라고 생각하면 된다. end system과 다른 end system을 사이의 경로.. 2023. 4. 4. BOJ(1009).cpp 모듈러 연산(나머지 연산) 문제를 풀다 정수형 버퍼 오버플로우(Buffer Overflow)가 발생하여 해결방법을 찾는도중 모듈러 연산(나머지 연산)이 눈에 들어왔다. 모듈러 연산은 간단하게 a mod b = ? a를 b로 나눈 나머지를 구하는 것이다. #include #include using namespace std; int main() { int T; cin >> T; for (int i = 0; i > a >> b; for (int i = 1; i 2023. 3. 28. [C++] cin, getline 함수 # cin 에 포함되어 있다. 표준 입력 버퍼에서 개행 문자를 제외한 값을 가져온다. 공백이나 개행 입력 시 공백 이전까지의 값만 결과로 받아들인다. 개행 문자를 입력 버퍼에 남겨둔다. // 정수 int n; cin >> n; // 문자열 string str; cin >> str; 위와 같이 사용이 가능하다. 이때 hello 같은 문자열이라면 문제 없이 입력을 받지만 Hello World!와 같이 띄어쓰기가 포함된 문장이라면 Hello 까지 밖에 입력이 되지 않을 것이다. cin의 >> 연산자에서는 공백문자에서 입력을 끊기 때문인데, 이러한 문제를 해결하기 위해서 getline()이라는 함수를 사용한다. # getline() getline()함수는 두 가지가 존재하는데 각가 다른 라이브러리에 존재한다. .. 2023. 2. 20. [C ++] r-value 참조 r-value는 단순 대입 연산자의 오른쪽 항을 말한다. r-value 참조자는 기존 참조자와 달리 &가 두번 붙는다. 따라서 int 자료형에 대한 참조는 int &이지만 int 자료형에 대한 r-value 참조 형식은 int&& 이다. #include using namespace std; void Rain(int &Param) { cout 2023. 2. 20. [C ++] 변환 생성자 '매개변수가 한 개인 생성자' 를 다른 말로 '변환 생성자' 라고도 한다. 문제는 이 변환 생성자가 은근슬쩍 호출되거나 불필요한 임시 객체를 만들어냄으로써 프로그램의 효율을 갉아먹는 원인이 된다는 것이다. #include using namespace std; // 제작자 코드 class Rain { public: // 매개변수가 하나뿐인 생성자는 형변환이 가능하다. Rain(int Param) : Data(Param) { cout 2023. 2. 4. [C ++] 복사 생성자 복사생성자는 객체의 복사본을 생성할 때 호출되는 생성자이다. 주로 클래스 내부에서 메모리를 동적 할당 및 해제하고 이를 멤버 포인터 변수로 관리하고 있는 경우에 사용된다. 클래스이름(const 클래스이름 &rhs); #include using namespace std; class Rain { public: Rain() { cout 2023. 2. 4. [C ++] 상수형 메소드 상수형 메서드 혹은 상수화된 메서드는 멤버 변수에 읽기 접근은 가능하나 쓰기는 허용되지 않는 메서드를 말한다. 여기서 '쓰기'란 각종 대입 연산자나 단항 연산자 등을 사용하는 것을 말한다. 선언 방법은 함수 원형 뒤에 형한정어인 const 예약어만 붙이면 된다. #include using namespace std; class RAIN { public: RAIN(int Param) : Data(Param) { }; ~RAIN() { } int GetData() const // const 예약어 { // 멤버 변수의 값을 읽을 수는 있지만 쓸 수는 없다. return Data; } int SetData(int Param) { Data = Param; } private: int Data = 0; }; int .. 2023. 2. 3. 이전 1 ··· 9 10 11 12 13 14 다음