본문 바로가기

전체 글103

[운영체제] OS(Operation System)이란? 1. 운영체제(OS, Operation System) 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스 2. OS의 역할 1. CPU 스케줄링, 프로세스 관리 - CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리 2. 메모리 관리 - 한정된 메모리를 어떤 프로세스에 얼마큼 할당해야 하는지 관리 3. 디스크 파일 관리 - 디스크 파일을 어떠한 방법으로 보관할지 관리 4. I/O 디바이스 관리 - I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고 받는 것을 관리 3. OS의 구조 1) GUI - 사용자가 컴퓨터와 상호작용하기 위한 시각적인 인터페이스 2) CUI - 사용자가 컴퓨터와 상호작용하기 위한 명령어로 처리하는 인터페이스 3) 드라이버 - 하드.. 2023. 10. 28.
[백준 C++] 4386번: 별자리 만들기 1. 문제 https://www.acmicpc.net/problem/4386 4386번: 별자리 만들기 도현이는 우주의 신이다. 이제 도현이는 아무렇게나 널브러져 있는 n개의 별들을 이어서 별자리를 하나 만들 것이다. 별자리의 조건은 다음과 같다. 별자리를 이루는 선은 서로 다른 두 별을 일 www.acmicpc.net 2. 알고리즘 분류 그래프 이론 최소 스패닝 트리 3. 소스 코드 #include #include #include #include #include using namespace std; int n, parent[101]; vector stars; vector graph; // 부모를 찾는 함수 int Find(int x) { return parent[x] == x ? x : parent[x.. 2023. 10. 22.
[디자인 패턴] 옵저버 패턴(Observer Pattern) 1. 옵저버 패턴(Observer Pattern) 한 객체의 상태가 변경될 때마다 그 객체에 의존하는 다른 객체들에게 알림을 보내는 디자인 패턴 #include #include using namespace std; class Observer { public: virtual void update(float temperture, float humidity) = 0; }; class WeatherStation { private: vector observers; float temperture; float humidity; public: void addObserver(Observer* observer) { observers.push_back(observer); } void removeObserver(Observe.. 2023. 10. 22.
[디자인 패턴] 전략 패턴(Strategy Pattern) 1. 전략 패턴(Strategy Pattern)이란? 객체의 행위를 바꾸고 싶을 때, '직접' 수정이 아닌 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능한 패턴 #include using namespace std; // Strategy Interface class Strategy { public: virtual int doOperation(int num1, int num2) = 0; }; // Concrete Strategies class Add : public Strategy { public: int doOperation(int num1, int num2) override { return num1 + num2; } }; class Subtract : public .. 2023. 10. 22.
[디자인 패턴] 팩토리 패턴(Factory Pattern) 1. 팩토리 패턴(Factory Pattern)이란? 객체를 생성하는 클래스를 따로 두는 디자인 패턴(Simple Factory Pattern) #include #include using namespace std; class Animal { public: virtual void makeSound() = 0; }; class Dog : public Animal { public: void makeSound() override { cout 2023. 10. 22.
[백준 C++] 2623번: 음악프로그램 1. 문제 https://www.acmicpc.net/problem/2623 2623번: 음악프로그램 첫째 줄에는 가수의 수 N과 보조 PD의 수 M이 주어진다. 가수는 번호 1, 2,…,N 으로 표시한다. 둘째 줄부터 각 보조 PD가 정한 순서들이 한 줄에 하나씩 나온다. 각 줄의 맨 앞에는 보조 PD가 담당한 www.acmicpc.net 2. 알고리즘 분류 그래프 이론 위상 정렬 3. 소스 코드 Key Point) 1. 순서가 정해져 있는 일련의 수열을 차례대로 출력하는 문제는 '위상 정렬' 알고리즘을 사용한다. #include #include #include using namespace std; int N, M; int arr[1001]; int inDegree[1001]; int visited[1.. 2023. 10. 3.
[기타] 주어진 수열에서 선택한 3개의 값의 합이 0에 가장 가깝게 선택하는 방법 1. 유사 문제 https://www.acmicpc.net/problem/2473 2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net 2. 소스 코드 Key Point) 1. 투 포인터 알고리즘을 활용하기 위해 정렬한다. 2. 3개의 값을 비교할 때는 하나를 정해 놓고 2개의 값을 '투 포인터' 알고리즘을 통해 계산한다. #include #include #include using namespace std; long long arr[5000]; long long ans[3]; int main(.. 2023. 10. 3.
[백준 C++] 2473번: 세 용액 1. 문제 https://www.acmicpc.net/problem/2473 2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net 2. 알고리즘 분류 정렬 이분 탐색 두 포인터 3. 소스 코드 Key Point) 1. 투 포인터 알고리즘을 활용하기 위해 정렬한다. 2. 3개의 값을 비교할 때는 하나를 정해 놓고 2개의 값을 '투 포인터' 알고리즘을 통해 계산한다. #include #include #include using namespace std; long long solutions[5000].. 2023. 10. 3.
[백준 C++] 2342번: Dance Dance Revolution 1. 문제 https://www.acmicpc.net/problem/2342 2342번: Dance Dance Revolution 입력은 지시 사항으로 이루어진다. 각각의 지시 사항은 하나의 수열로 이루어진다. 각각의 수열은 1, 2, 3, 4의 숫자들로 이루어지고, 이 숫자들은 각각의 방향을 나타낸다. 그리고 0은 수열의 마 www.acmicpc.net 2. 알고리즘 분류 다이나믹 프로그래밍 3. 소스 코드 Key Point) 1. 왼쪽 발로 움직이는 경우와 오른쪽 발로 움직이는 경우 모두 탐색한다. 2. 왼쪽 발로 움직일 때 드는 힘과 오른쪽 발로 움직일 때 드는 힘 중 작은 값을 선택한다. #include #include #include #define INF 987654321; using names.. 2023. 10. 3.
[백준 C++] 2252번: 줄 세우기 1. 문제 https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 2. 알고리즘 분류 그래프 이론 위상 정렬 3. 소스 코드 Key Point) 1. 그래프를 이용하여 학생 순서를 정리한다. 2. '위상 정렬'을 사용하여 그래프 순서대로 값을 정렬한다. #include #include #include #define MAX_N 32001 using namespace std; int N, M; int visite.. 2023. 10. 3.