전체 글
-
[운영체제/OS] 프로세스/문맥교환/스케줄링ComputerScience/운영체제 2020. 6. 3. 10:21
프로세스(Process)와 쓰레드(Thread)의 차이를 알아보자. 프로세스 (Process) Process : 프로세스라는 것은 하나의 작동하고 있는 프로그램, 프로세스의 상태로는 CPU의 수행상태, 프로세스 주소공간, 프로세스 관련 커널 자료구조가 있다. CPU의 수행상태 : CPU의 수행 상태를 나타내는 하드웨어 문맥으로 PC(Program Counter : 다음에 실행 될 Code의 위치)와 각종 레지스터가 존재한다. 프로세스 주소 공간 : 프로세스는 Code, Stack, Data값을 각각 갖고 있다. 커널상의 Context : 프로그램이 수행돼 프로세스가 되면 OS는 이를 관리하기 위한 자료구조를 유지한다. PCB(Process Control Block) : 프로세스 정보를 저장해놓은 블록을 ..
-
[C++/STL] set은 무엇인가? [중복제거용, 존재체크용]ComputerScience/STL 2020. 5. 27. 23:35
set이라는 애를 배워보자... std::set is an associative container that contains a sorted set of unique objects of type Key. Sorting is done using the key comparison function Compare. Search, removal, and insertion operations have logarithmic complexity. Sets are usually implemented as red-black tree. 무엇인가 하오니 해석해보면 set은 타입키의 고유한(중복이 없는) 객체의 정렬된 세트를 포함하는 연관 콘테이너이다. 정렬은 Compare함수를 통한 정렬을 통해 이루어진다. 검색, 제거, 삽입..
-
[C++/priority_queue/operator overloading] 우선순위 큐 struct 연산자 오버로딩ComputerScience/STL 2020. 5. 24. 19:39
priority_queue는 기본적으로 max_heap을 가지고 있다. 어떻게 넣던간에 max_heap으로 저장이 되고 pop()할 때 마다 가장 큰 값이 나온다. 그런데 문제는 priority_queue(이하 pQ)안에 int형이 아닌 구조체나 클래스가 들어갈 수도 있는 것이고 여기서 우리가 정렬하고 싶은 방법이 있을 수 있다는 것 (예를 들면, x,y,z를 갖고 있는 구조체를 pQ에 넣을 때, z의 크기를 기준으로 heap을 만들고 싶다) 그럴 땐, 이와 같이 코드를 작성한다. #include #include #include using namespace std; struct Object { int x; int y; int z; Object(int a, int b,int c) { x = a; y = b..
-
C++/연산자 오버로딩/operatior overloadingComputerScience/STL 2020. 5. 24. 17:58
연산자 오버로딩이 어려워 정리해봤다 #include #include #include #include using namespace std; bool cmp_func1(const int& a, const int& b) { return a b; } struct cmp_struct1{ bool operator()(const int& x, const int& y) { return x y; } }; int main() { priority_queue q..
-
[C++/STL]VectorComputerScience/STL 2020. 5. 21. 01:28
C/C++의 배열을 동적으로 사용할 수 있는 형태의 Container (전공 프로젝트 중 처음 알게 됐고 매우 편하다) #include using namespace std; 위와 같이 라이브러리를 import 해줘야 사용할 수 있다. 거의 코테할 때 기본적으로 import해주는 편 또한 vector를 사용할 때, std::를 일일히 써줄 필요 없이 using namespace std; 를 선언하면 된다. vector v; vector v; vector v(n); vector v(n,a); vector v1(v2); 생성은 다음과 같다. vector v; data type을 가진 vector를 만들어준다. 보통은 int를 많이 쓰는 편임 편의를 위해 int형으로 선언하겠습니다. vector v; 와 같이 ..
-
9012번 괄호ComputerScience/코딩테스트 2020. 1. 6. 21:49
문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여러분은 입력으로 주어진 괄호 문자열..
-
11557 Yangjojang of The YearComputerScience/코딩테스트 2019. 11. 27. 23:20
문제 입학 OT때 누구보다도 남다르게 놀았던 당신은 자연스럽게 1학년 과대를 역임하게 되었다. 타교와의 조인트 엠티를 기획하려는 당신은 근처에 있는 학교 중 어느 학교가 술을 가장 많이 먹는지 궁금해졌다. 학교별로 한 해동안 술 소비량이 주어질 때, 가장 술 소비가 많은 학교 이름을 출력하여라. 입력 입력의 첫 줄에는 테스트 케이스의 숫자 T가 주어진다. 매 입력의 첫 줄에는 학교의 숫자 정수 N(1 ≤ N ≤ 100)이 주어진다. 이어서 N줄에 걸쳐 학교 이름 S(1 ≤ |S| ≤ 20, S는 공백없는 대소문자 알파벳 문자열)와 해당 학교가 지난 한 해동안 소비한 술의 양 L(0 N; while (N--) { int M; cin >> M; YJJ *y = new YJJ[M]; for(int i =0 ;..
-
1920번 숫자 찾기ComputerScience/코딩테스트 2019. 11. 23. 22:55
https://www.acmicpc.net/problem/1920 불러오는 중입니다... 단순 배열 2개를 만들어서 무작정 찾으려하니 '시간초과'가 발생하였다. 이진탐색을 이용하여 탐색하였다. 시간복잡도를 O(logn)으로 줄인다. c++의 vector을 사용했다. cin의 시간초과를 막기 위해 ios_base::sync_with_stdio(0); cin.tie(0); 라는 코드를 써준다. #include #include #include using namespace std; const int MAX = 100000; int N, M; vector A; int binarySearch(int low, int high, int target){ if(low > high) return 0; else { int m..