5.2 선형 자료 구조
·
독서/면접을 위한 CS 전공지식 노트
5.2.1 연결 리스트연결 리스트는 데이터를 감싼 노드를 포인터로 연결해서 공간적인 효율성을 극대화시킨 자료구조임.싱글 연결 리스트next 포인터만 가짐.이중 연결 리스트next 포인터와 prev 포인터를 가짐.원형 이중 연결 리스트이중 연결 리스트와 같지만 마지막 노드의 next 포인터가 헤드 노드를 가리킴.5.2.2 배열배열은 같은 타입의 변수들로 이루어져 있고, 크기가 정해져 있으며, 인접한 메모리 위치에 있는 데이터를 모아놓은 집합랜덤 접근과 순차적 접근랜덤 접근 : 직접 접근이라 불리며 동일한 시간에 배열과 같은 순차적인 데이터가 있을 때 임의의 인덱스에 해당하는 데이터에 접근할 수 있는 기능순차적 접근 : 데이터를 저장된 순서대로 검색해야 하는 랜덤 접근과 반대되는 기능배열과 연결 리스트 비교..
5.1 복잡도
·
독서/면접을 위한 CS 전공지식 노트
5.1.1 시간 복잡도빅오 표기법입력 범위 n을 기준으로 해서 로직이  몇 번 반복되는지 나나태는 것임.시간 복잡도의 존재 이유효율적인 코드로 개선하는 데 쓰이는 척도가 됨.5.1.2 공간 복잡도프로그램을 실행시켰을 대 필요로 하는 자원 공간의 양을 말함. 정적 변수로 선언된 것 말고도 동적으로 재귀적인 함수로 인해 공간을 계속해서 필요로 하는 경우도 포함함.5.1.3 자료 구조에서의 시간 복잡도자료 구조접근탐색삽입삭제배열(array)O(1)O(n)O(n)O(n)스택(stack)O(n)O(n)O(1)O(1)큐(queue)O)(n)O(n)O(1)O(1)
4.1 데이터베이스의 기본
·
독서/면접을 위한 CS 전공지식 노트
데이터베이스 : 일정한 규칙, 규약을 통해 구조화되어 저장되는 데이터의 모음DBMS : 데이터베이스를 제어, 관리하는 통합 시스템4.1.1 엔터티엔터티 : 여러 개의 속성을 지닌 명사(ex : 사람, 장소, 물건 등등)약한 엔터티 : 혼자서는 존재하지 못함.강한 엔터티 : 혼자서도 존재가능함.4.1.2 릴레이션릴레이션 : 데이터베이스에서 정보를 구분하여 저장하는 기본 단위4.1.3 속성속성 : 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖느 ㄴ정보4.1.4 도메인도메인 : 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합4.1.5 필드와 레코드4.1.6 관계1:1 관계테이블을 두 개의 테이블로 나눠 테이블의 구조를 더 이해하기 쉽게 만들어 줌.1:N 관계예를 들어 쇼핑몰을 운영한다고 해보면 ..
3.2 메모리
·
독서/면접을 위한 CS 전공지식 노트
3.2.1 메모리 계층메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어 있음.레지스터 : CPU 안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억 용량 가장 작음.캐시 : L1, L2 캐시를 지칭함. 휘발성, 속도 빠름, 기억 용량 적음.주기억장치 : RAM을 가리킴. 휘발성, 속도 보통, 기억 용량 보통.보조기억장치 : HDD, SSD를 일컬으며 비휘발성, 속도 낮음, 기억 용량 많음.캐시데이터를 미리 복사해 놓는 임시 저장소이자 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리임. 이를 통해 데이터를 접근하는 시간이 오래 걸리는 경우를 해결하고 무언가를 다시 계산하는 시간을 절약할 수 있음.웹 브라우저의 캐시쿠키 : 만료기한이 있는 키-값 저장소임. 쿠키를..
4.2 ERD와 정규화 과정
·
독서/면접을 위한 CS 전공지식 노트
4.2.1 ERD의 중요성ERD : 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션 간의 관계들을 정의한 것시스템의 요구사항을 기반으로 작성되고, 이 ERD를 기반으로 데이터베이스를 구축함.관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용함.비정형 데이터(비구조화 데이터)를 충분히 표현할 수 없음.4.2.3 정규화 과정정규화 과정 : 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정데이터베이스 이상 현상 : 회원이 한 개의 등급을 가져야 하는데 세 개의 등급을 갖거나 삭제할 때 필요한 데이터가 같이 삭제되고, 데이터를 삽입해야 하는데 하나의 필드 값이 NULL이 되..
3.1 운영체제와 컴퓨터
·
독서/면접을 위한 CS 전공지식 노트
3.1.1 운영체제와 컴퓨터운영체제의 역할CPU 스케줄링과 프로세스 관리 : CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환 관리메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼마큼 할당해야 하는지 관리디스크 파일 관리 : 디스크 파일을 어떠한 방법으로 보관할지 관리I/O 디바이스 관리 : I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고 받는 것을 관리운영체제의 구조 GUI : 사용자가 전자장치와 상호 작용할 수 있도록 하는 사용자 인터페이스의 한 형태, 단순 명령어 창이 아닌 아이콘을 마우스로 클릭하는 단순한 동작으로 컴퓨터와 상호 작용할 수 있도록 해줌.드라이버 : 하드웨어를 제어하기 위한 소프트웨어CUI : 그래픽이 아닌 명령어로 처리하는 인..
2.5 HTTP
·
독서/면접을 위한 CS 전공지식 노트
2.5.1 HTTP/1.0HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계됨. -> RTT 증가를 불러옴. 서버로부터 파일을 가져올 때마다 TCP의 3-웨이 핸스셰이크를 계속해서 열어야 하기 때문에 RTT가 증가하는 단점 발생.RTT : 패킷이 목적지에 도달하고 나서 출발지로 돌아오기까지 걸리는 시간, 패킷 왕복 시간RTT의 증가를 해결하기 위한 방법이미지 스플리팅 : 많은 이미지가 합쳐있는 하나의 이미지를 다운로드 받고 이를 기반으로 background-image의 position을 이용하여 이미지를 표기함.코드 압축 : 코드를 압축해서 개행 문자, 빈칸을 없애서 코드의 크기를 최소화함. -> 용량 감소이미지 Base64 인코딩 : 이미지 파일을 64진법으로 이루어진 문자열로 인코딩..
2.4 IP 주소
·
독서/면접을 위한 CS 전공지식 노트
2.4.1 ARPIP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜ARP : 가상 주소 IP -> 실제 주소 MACRARP : 실제 주소 MAC -> 가상 주인 IP ARP의 주소를 찾는 과정  장치 A가 ARP Request 브로드캐스트를 보내서 IP 주소인 120.70.80.3(예시)에 해당하는 MAC 주소를 찾습니다. 그러고 나서 해당 주소에 맞는 장치 B가 ARP Reply 유니캐스트를 통해 MAC 주소를 변환하는 과정을 거쳐 IP 주소에 맞는 MAC주소를 찾게 됨.브로드캐스트 : 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식유니캐스트 : 고유 주소로 식별된 하나의 네트워크 목적지에 1:1로 데이터를 전송하는 방식2.4.2 홉바이홉 ..
백준 2018 - 수들의 합 5(C++)
·
코딩테스트/백준
문제 풀이 전략투 포인터를 활용하여 문제를 풀어주면 됩니다. 수를 1부터 n까지 나열한 후 한 칸씩 이동하면서 합을 누적시켜 답인지 아닌지 체크하며 이동합니다.입력15출력4예시1 2 3 4 5 6 7 8 9 10 11 12 13 14 151 + 2 + 3 + 4 + 5 일 때 15이므로 이 때 카운팅됩니다. 그러므로 6을 옆으로 이동시켜 합을 n보다 크게 만들고 시작 인덱스인 1을 옆으로 옮기면서 합이 n이 되는지 체크합니다.정답 코드#include using namespace std;int n;int main() { ios_base::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL); cin >> n; int start_index ..
백준 9461 - 파도반 수열(C++)
·
코딩테스트/백준
문제 풀이 전략프랙탈이란 작은 구조가 전체 구조와 비슷한 형태로 끝없이 되풀이 되는 구조를 말합니다. 처음의 몇 개의 항이후로 계속적으로 규칙적인 구조가 나타나고 있습니다.1, 1, 1, 2, 2, 3, 4, 5, 7, 9유심히 찾아보면 (i - 2)항과 (i - 3)항 을 더하면 i항 값이 나옵니다.2 + 2 = 4 // 4번째항 + 5번째항 = 7번째 항4 + 5 = 9 // 7번째항 + 8번째 항 = 10번째 항 정답 코드#include using namespace std;int t, n;long long a[101];int main() { ios_base::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL); cin >> t; ..