본문 바로가기

programming study/Computer Science

(28)
기초 JS, CS 상식 - 컴퓨터 시간 본 내용은 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 강의를 토대로 작성하였습니다. 컴퓨터 시간 현실의 시간을 전산화 시간이란 물리량 시간은 물리학 관점에서 봤을 대 시각과 시각 사이 간격을 표현하는 단위를 뜻함 위치 시간은 위치에 따라 다르게 표현 경도상 위치에 따라 다름 천문 현상 지구자전속도의 불규칙성, 지구의 자전주기와 공전주기 등 천문 현상으로 인한 시간 보정이 필요 문화 문화에 따라 시간 표현이 다를 수 있음 역사 역사적 사건에 의해 시간은 다르게 표현될 수 있음 사회 사회적 제도에 의해 시간은 변함 협정 세계시 (UTC) 대부분의 국가가 협정 세계시를 기반으로 시간을 관리 원자 시계와 윤초 보정을 기반으로 표준화한 시각 모든 시간대는 UTC+0을 기준으로 환산 표..
기초 JS, CS 상식 - 네트워크 기초 본 내용은 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 강의를 토대로 작성하였습니다. 브라우저에 URL을 입력한 이후의 과정 Step1. URL 해성 scheme://:@:/ scheme: protocol이 들어가는 영역 계정정보: 인증이 요구되는 경우, id, password를 입력하면 접속 허가를 받을 수 있음 Step2. DNS 조회 Domain Name System DNS는 도메인과 IP 주소를 서로 변환 DNS로 요청을 보내기 전에, 브라우저 캐시와 hosts 파일을 참조 DNS는 보통 통신사(ISP)에서 제공하는 것을 사용 Name Server: DNS를 운영하는 서버 URL 해석 -> 브라우저 캐시 확인 -> (없다면) hosts 파일 참조 -> (없다면) DNS ..
기초 JS, CS 상식 - 객체지향과 프로토타입 본 내용은 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 강의를 토대로 작성하였습니다. 1. 객체지향의 객체 객체지향의 객체는 현실에 있는 것을 추상화 2. 추상이란? 사물이 지니고 있는 여러 측면 중 특정한 부분만 보는 것 그 외의 필요없는 부분은 버림 3. 객체지향이란? 객체 위주로 설계하고 프로그래밍하는 패러다임 객체지향 언어에선 추상화의 최소 단위가 객체 각각의 객체는 메시지를 주고받을 수 있음 4. 객체지향의 오해 객체지향은 패러다임일 뿐 언어는 지향하는 것을 조금 더 편하게 구현할 수 있게 도와줄 뿐 JavaScript, Go, C로도 객체지향 프로그래밍을 할 수 있음 JavaScript는 프로토타입을 통해 객체지향을 표현 상황에 따라 적합한 패러다임이 있는 것일 뿐,..
기초 JS, CS 상식 - 함수형 프로그래밍 본 내용은 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 강의를 토대로 작성하였습니다. 1. 패러다임 프로그램은 순차, 분기, 반복, 참조로 구성 패러다임은 위 4가지 요소를 어떻게 이용할 지를 다룸 객체지향은 객체를 통해 묶고 객체간 통신함으로 프로그램이 동작함 함수형은 데이터를 함수를 이용해 새로운 데이터를 만들어 나가는 데이터 파이프 라인 형태로 작동 2. 함수형 패러다임 객체지향 추상화의 최소 단위가 객체인것 처럼, 함수형은 함수가 최소 단위 함수 단위로 나눠지므로 재사용성이 높음 불변성을 지향하기에 동작을 예측하기 쉽고 사이드 이펙트 방지 동시성 문제도 해결 객체지향은 제어 흐름의 간접적인 전환에 부과되는 규율 함수형은 변수 할당에 부과되는 규율 장점 상태가 없어, 사이..
기초 JS, CS 상식 - 암호화 기초 본 내용은 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 강의를 토대로 작성하였습니다. 암호화 평문(Plaintext)을 해독할 수 없는 암호문(Ciphertext)로 반환 단방향(해싱)과 양방향 암호화 존재 1. 단방향 암호화 해시 알고리즘을 이용하여, 평문을 복호화할 수 없는 형태로 암호화 저장하는 측에서 해당 데이터를 알면 안되기 때문 MD5, SHA 알고리즘이 대표적 사용자 비밀번호 등을 저장할 때 자주 사용 MD5와 SHA-0, SHA-1은 해시 충돌이 발생할 수 있는 취약점이 있어 사용 지양 Rainbow Table을 통해 원문을 알아낼 수 있음 Rainbow Table: 평문과 해시 함수로 만든 문자열을 모두 저장시켜 놓은 표 데이터를 탈취당하더라도, 원문을 알아낼 ..
기초 JS, CS 상식 - 유니코드 본 내용은 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 강의를 토대로 작성하였습니다. 1. 문자를 다루는 방식들 CCS(Coded Character Set) 문자들을 Code Point에 대응시켜 만든 코드화된 문자들의 집합 Code Point: 정의해둔 정수값, 각 문자들의 식별자가 됨 Code Point는 Character의 식별자가 됨 ex) KS C 5601, ISO 10646, US-ASCII ... CES(Character Encoding Scheme) CSS를 octet(8bit) 집합에 대응 CSS와 CES는 1:1로 대응 인코딩에 해당함 인코딩: Characther를 시스템이 인식할 수 있는 값으로 변환 디코딩: 인코딩된 값을 다시 Character로 변환 UT..
자료구조와 알고리즘 - 힙 본 내용은 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 강의를 토대로 작성하였습니다. 1. 힙이란? 이진 트리 형태 우선순위가 높은 요소가 먼저 나가기 위해 요소가 삽입, 삭제 될 때 바로 정렬되는 특징이 있음 우선순위 큐를 구현하기 위한 가장 적합한 방법 힙과 우선순위 큐가 같은 것이 아님 우선순위가 높은 요소를 루트에 배치 최대 힙(Max Heap): 루트가 가장 큰 값이 되는 힙 최소 힙(Min Heap): 루트가 가장 작은 값이 되는 힙 JavaScript에서는 직접 구현해야 함 우선 순위 큐 우선 순위가 높은 요소가 먼저 나가는 큐 자료구조가 아닌 개념 구현하는 방법은 다양하게 존재 2. Heap의 동작 Heap 요소 추가 요소가 추가될 떄는 트리의 가장 마지막 정점에..
자료구조와 알고리즘 - 트리 본 내용은 프로그래머스의 코딩테스트 광탈 방지 A to Z : JavaScript 강의를 토대로 작성하였습니다. 1. 트리란? 방향 그래프의 일종으로 정점을 가리키는 간선이 하나 밖에 없는 구조 Root: 가장 상위의 정점 Node: 각 정점 Leaf Node: 자식이 없는 정점(가장 하위) Level: Root로부터 몇 번째 깊이인지를 표현 Degree: 한 정점에서 뻗어나가는 간선 수 2. 트리의 특징 Root를 제외한 모든 Node는 하나의 부모 Node를 가짐 Node가 N개인 트리는 반드시 N-1개의 간선을 가짐 Root에서 특정 정점으로 가는 경로는 유일 편향 트리 한 방향으로만 정점이 이어진 것 이진트리 각 정점이 최대 2개의 자식을 가지는 트리를 의미 탐색을 위한 알고리즘에서 많이 사용 완..