CS 공부

    C++ 알고리즘 문제풀이하며 자주 쓰이는 라이브러리, 함수 정리

    비정기적으로 업데이트 합니다. #include unique(시작 주소, 종료 주소); - 중복제거 return 값 : 중복 제거하고 난 후의 끝 주소 주의 사항 : sort후 사용해야 올바르게 수행이 가능함!! 참고 자료 응용 : erase(unique(v.begin(), v.end()) , v.end()); --> erase함수를 이용하여 중복 된 항목들을 모두 지워 줄 수가 있다. find(시작 주소, 종료 주소,값); - 값 찾기 return 값 :값이 있다면, 찾고자 하는 값의 주소 /값이 없다면, 종료 주소 주의 사항 : #include의 find()와는 다르다. 참고 자료 min_element(시작 주소, 종료 주소); / max_element(시작 주소, 종료 주소); : 최소 / 최대값 찾..

    DB 정리 - 1 (데이터 베이스 / 인덱스)

    데이터베이스 데이터베이스란? 데이터베이스(DB, database)는 통합하여 관리되는 데이터의 집합체를 의미한다. 이는 중복된 데이터를 없애고, 자료를 구조화하여, 효율적인 처리를 할 수 있도록 관리된다. 따라서, 여러 업무에 여러 사용자가 데이터 베이스를 사용할 수 있습니다. 이러한 데이터베이스는 응용 프로그램과는 다른 별도의 미들웨어에 의해 관리되며, 이를 데이터베이스 관리 시스템(DBMS: Database Management System)이라고 한다. 데이터베이스를 사용하는 이유 데이터베이스란 다수의 사용자가 사용하는 데이터들의 공유와 운영을 위해 저장해 놓는 공간을 말한다. 프로그램을 만들다보면 프로그램 사용자들에 의해 생성된 데이터, 프로그래머가 필요에 의해 프로그램에 넣어놓은 데이터등 필연적으..

    Chapter 1 - Computer Networks and the Internet

    James F. Kurose & Keith W. Ross의 Computer Networking - A Top-Down Approach 7th edition을 기준으로 정리합니다. 1.1 What is Internet? 1.1.1 "nuts and bolts" view (하드웨어와 소프트웨어의 구성요소 관점) computing device 사이에는 엄청나게 많은 연결이 존재한다. Nuts 와 Bolts라는 것으로 기술해 볼 때, 이는 인터넷을 구성하는 기본적 하드웨어 및 소프트웨어 구성요소 (host, end system) 분포되어있는 어플리케이션에게 서비스를 제공하는 정보망 시스템 (communitcation link) 하나의 시스템에서 데이터를 전달할때 이루어지는 패킷(packet)이라는 정보의 묶음 ..

    CS 스터디 - OS 정리 3

    Operating System Structure Multiprogramming 멀티프로그래밍은 효율성을 위해 필요하다. CPU 가 항상 하나 이상의 실행을 하기 위해 jobs(code and data) 들을 Multiprogramming이 organizes한다. 전체 작업의 subset은 항상 메모리에 저장된다. job Scheduling에 의해 작업이 선택된다. 입출력등으로 인해 CPU가 기다려야할 경우에 운영체제는 다른 작업으로 변경되게 된다. Time sharing 멀티프로그래밍에서 확장된 개념으로, 멀티태스킹이라고 불리기도 한다. CPU가 스케줄링을 통해 작업들을 빠르게 switching 하면서 마치 동시에 프로그램이 구성되는 것처럼 느껴지게 한다. 응답시간은 충분히 짧아야 한다. 각 유저들은 메..

    CS 스터디 - OS 정리 2

    메모리 계층구조(Memory Hierarchy) 메모리를 필요에 따라 여러가지 종류로 나누어둔 것이다. secondary storage 주기억장치는 모든 프로그램을 담기에 용량이 너무 적은 데다가 전원이 꺼지면 담겨져 있던 데이터가 모두 초기화 된다. 이를 보완하기 위해 주기억장치 밑에 HDD, SSD와 같은 보조기억장치를 넣게 된다. 따라서 운영체제는 보조기억을 위해 다음과 같은 역할을 지닌다. - 비휘발성 - 보조 메모리 - 프로그램과 데이터 저장 캐시 메모리 (Cache Memory) 프로세서 내외부에 있으며, 처리 속도가 빠른 프로세서와 상대적으로 느린 메인 메모리의 속도 차이를 보완하고 데이터를 메인 메모리에서 블록 단위로 가져와 프로세서에 워드 단위로 전달하여 속도를 높인다. 주기역장치에서 사..

    불안정 정렬 sort, 안정정력 stable_sort

    안정 정렬와 불안정 정렬 지금까지 계속 sort를 써오면서 해당 값에 대해서 순서가 유지되는지 여부를 거의 신경써본적이 없었고 (순서는 당연히 유지되는줄 알았다), 동일한 값에 대해 기존의 순서가 유지되는 정렬을 해본적이 없어서 잘 몰랐는데, sort 함수를 활용한 정렬은 동일한 값에 대해 기존의 순서가 뒤바뀔 수 있다. 아래의 이미지에 잘 나와있는데, stable 같은 경우에는 순서가 확실히 유지되는 반면, not stable 같은 경우에는 같은 값에 대해서 순서가 뒤바뀔 수 있다. C++의 sort 와 stable sort c++의 경우 algorithm 헤더에서 sort 함수와 stable_sort 함수를 둘다 지원하고 있으며, sort 함수의 경우 내부적으로 퀵 정렬로, stable_sort 함수..

    CS 스터디 - OS 정리 1

    프로세서 (=CPU) 제어장치, 연산장치, 레지스터 그리고 데이터 버스로 구성된 디지털 시스템의 핵심 부분으로,프로그램을 기억장치로부터 읽어 연산 처리, 비교 처리, 데이터 전송, 편집, 변환, 테스트와 분기 등의 데이터를 처리하고, 각종 장치를 구동하는 역할을 한다. 프로세서 레지스터 프로세서의 내부에 있으며, 프로레서가 사용할 데이터를 보관하는 가장 빠른 메모리이다. 레지스터 종류 User Visible Register : 사용자가 운영체제와 프로그램을 이용하여 정보를 변경할 수 있는 레지스터로 접근이 가능한 데이터와 주소, 일부 조건 코드를 보관한다 ex)데이터 레지스터, 주소 레지스터 Control and Status Register : 연산을 위해 사용하거나 연산 결과의 상태를 알려주는 값들이 ..

    Greedy Algorithm (그리디 알고리즘, 탐욕법) 개념 정리 & 문제 추천

    앞으로 코딩테스트를 준비하며 공부하는 알고리즘 유형에 대해서 정리를 해보고, 관련된 문제들을 정리해보려고 한다. 1. 그리디 알고리즘이란? 그리디 알고리즘이란 말그대로 Greedy(탐욕)이라는 이름 그대로 지금 당장 최적인 답을 선택하는 과정을 반복하여 결과를 도출하는 알고리즘이다. 일반적인 그리디 알고리즘은 문제를 풀기위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한다. → 그리디 알고리즘의 해법은 정당성 분석, 최적의 해를 구할 수 있는지 검토하는 것이 중요하다. 일반적인 상황에서는 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많지만, 코딩테스트는 그리디 알고리즘을 활용해서 만들어질 수 있도록 문제를 출제하므로 OK 인것. 2. 그리디 알고리즘 예시 (이코테 내용 정리) 가장 대표적인 예..