컴퓨터 사이언스

컴퓨터 사이언스/자료구조

배열, 문자열

배열이란 메모리 상에 데이터를 연속적으로 배치한 자료구조이다. 문자열이란 문자, 단어 등으로 구성된 문자들의 집합을 말한다. 파이썬에서 예를 들면, 다음과 같다. 이때, 주의할 점은 숫자를 따옴표로 감싸면 이 또한 문자열이 된다는 것이다. "Life is too short, You need Python" "a" "123" 인용 https://wikidocs.net/13 02-2 문자열 자료형 문자열(string)이란 문자, 단어 등으로 구성된 문자들의 집합을 말한다. 예를 들면 다음과 같다. ```plaintext Life is too short, You need… wikidocs.net https://chunggaeguri.tistory.com/entry/%EC%9E%90%EB%A3%8C%EA%B5%A..

컴퓨터 사이언스/Algorithm

소수 판별과 에라토스테네스의 체

소수 판별 알고리즘 기본적인 소수를 판별하는 알고리즘은 다음과 같다. def is_prime_easy_version(target): for i in range(2, target): if target % i == 0: return False return True 즉, target value를 제외한 그 전의 값들을 모두 target value와 나누어서 나누어 떨어지는 값이 있으면 그 target value는 소수가 아닌 것이다. 하지만 이 방식은 N값의 소수를 구하려고 할때, 최대 O(N)의 시간 복잡도를 갖는다. 따라서 이 시간 복잡도를 낮추기 위해 조금 다른 방법을 생각해봐야한다. 첫 번째로 생각한 것은 2부터 target value를 2로 나눈 몫까지로 target value를 나누고 만약 그 중에..

컴퓨터 사이언스/Database

DB Index

index가 중요한 이유 예를 들어 다음의 select query 발생시, first_name에 index가 걸려있다면 full scan보다 더 빨리 찾을 수 있다. full scan : O(N) B tree based Index : O(log N) SELECT * FROM customer WHERE first_name = 'Minsoo'; 즉, index를 사용하는 이유는 다음과 같다. 특정 조건을 만족하는 튜플(들)을 빠르게 조회하기 위해서이다. 빠르게 정렬(order by)하거나 그룹핑(group by)하기 위해서이다. index 거는 법 이름과 같이 중복을 허용하는 index를 만드는 방법은 다음과 같다. CREATE INDEX player_name_idx ON player (name); SELE..

컴퓨터 사이언스/Database

왜 DB Index로 B tree 계열이 사용되는가?

B tree 계열에는 B+ tree, B* tree가 있는데, 시간복잡도를 계산했을때 average case와 worst case 모두 조회, 삽입, 삭제에서 O(logN)이 나온다. 그런데 self-balancing BST의 종류인 AVL tree와 Red-Black tree의 average case와 worst case 모두 조회, 삽입, 삭제에서 시간복잡도 O(logN)이 나온다. 그렇다면 이제 왜 DB index로 B tree 계열이 사용되는지 알아보자. computer system CPU : 프로그램의 코드가 실제로 실행되는 곳 Main memory(RAM) : 실행중인 프로그램의 코드들과 코드 실행에 필요한 혹은 그 결과로 나온 데이터들이 상주하는 곳 Secondary Storage(SSS o..

컴퓨터 사이언스/자료구조

B tree

이진 트리(Binary Tree) 자식 노드가 최대 2개인 노드들로 구성된 트리로, 각 자식 노드는 왼쪽 자식 노드, 오른쪽 자식 노드로 나눌 수 있다. 또한 자료의 삽입, 삭제 방법에 따라서 다음과 같이 나뉘어질 수 있다. Full Binary Tree : 각 노드가 0개 혹은 2개의 자식 노드를 갖는다. Complete Binary Tree (완전 이진 트리) : 마지막 레벨을 제외한 모든 노드가 가득 차 있어야 하고, 마지막 레벨의 노드는 왼쪽부터 노드가 순서대로 채워진 이진트리이다. Perfect Binary Tree (포화 이진 트리) : Full Binary Tree 이면서, Complete Binary Tree 인 경우이다. 모든 leaf node의 레벨이 동일하고, 모든 레벨이 가득 채워져..

컴퓨터 사이언스/개발 상식

html - div, article, section 의 차이

모두 block 요소로 div 만으로 제작되던 시절에 article, section 태그가 추가되었다. 즉, 어떤 영역에 태그를 사용한다면 그 태그는 외형적으로는 별 차이가 없어보여도 의미가 맞아야 한다는 것이다. article 태그 : 문서 혹은 요소가 독립적으로 존재할 수 있을때, 사용한다. section 태그 : 논리적으로 관계있는 문서 혹은 요소를 분리할 때 사용한다. div 태그 : 요소간 논리적 관계와는 상관없이 요소를 나눠야 할 필요가 있을 경우에 사용한다.

컴퓨터 사이언스/개발 상식

API remind

같은 예금 창구에서도 개인 고객이냐 기업 고객이냐에 따라 달리 처리하는 것처럼, 클라이언트가 요청할 때도 방식이 존재한다. 즉, HTTP 라는 통신 규약을 따르는데, 클라이언트는 요청할 때 HTTP request method를 통해서 어떤 요청 종류인지 응답하는 서버 쪽에 정보를 알려준다. HTTP request method GET, POST, PATCH, PUT, DELETE 등 여러 방식이 존재하고, 그 중 가장 많이 쓰이는 GET, POST 방식에 대해 리마인드해본다.. GET 통상적으로 데이터 조회를 요청할 때 사용 데이터를 전달하기 위해서 URL 뒤에 물음표를 붙여 key=value 형태로 전달한다. POST 통상적으로 데이터 생성, 변경, 삭제시에 사용한다. 예) 회원가입, 회원탈퇴, 비밀번호..

컴퓨터 사이언스/Database

MongDB 사용법

설치하기 Homebrew 설치하기 : Homebrew는 다운로드 패키지를 관리할 수 있는 툴로 brew install 프로그램이름을 입력하면 프로그램을 자동으로 다운로드 받아 설치해준다. 터미널 창에 아래 코드를 복사, 붙여넣기 하고 엔터를 입력해주면 된다. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" mongoDB 설치하기 brew tap mongodb/brew brew install mongodb-community mongoDB 실행하기 brew services start mongodb-community Studio 3T MongoDB를 그래픽으로 볼 수 있게 도와주는 G..

컴퓨터 사이언스/Database

DB의 종류

Database는 크게 두 가지 종류로 나뉜다. RDBMS(SQL) 행/열의 생김새가 정해진 액셀에 데이터를 저장하는 것과 유사하다. 데이터 50만 개가 적재된 상태에서 갑자기 중간에 열을 하나 더하기는 어렵지만, 정형화되어 있는만큼 데이터가 일관적이고, 분석에 용이하다. MySQL, MSSQL이 여기에 속한다. NoSQL 딕셔너리 형태로 데이터를 저장해두는 DB로 데이터 하나하나마다 같은 필드 값들을 가질 필요가 없어 자유로운 형태의 데이터 적재에 유리한 대신에 일관성이 부족할 수 있다. MongoDB가 이에 속한다. MongoDB 다양한 플랫폼에서 사용할 수 있는 NoSQL 타입의 데이터베이스 프로그램으로 JSON과 비슷한 형태로 자료를 정리한다. MongoDB의 자료는 각각의 딕셔너리인 도규먼트가 ..

컴퓨터 사이언스/Algorithm

다이나믹 프로그래밍

문제를 쪼개서 작은 문제의 답을 구하고, 그걸로 더 큰 문제의 답을 구하는 것을 반복하는 알고리즘 분할정복과 비슷한 느낌이다. DP 구현 2가지 방법 Top-down 구현 방법: 재귀 저장 방식: Memoization Bottom-up 구현 방법: 반복문 저장 방식: Tabulation Memoization 한 번 구한 답들은 저장해두자는 저장 방식이다. 즉, 부분 문제들의 답을 한 번 구했으면, 또 구하지 않도록 (중복연산 방지) cache에 저장해두고, 다음부터 가져다 쓰는 방식 필요한 부분 문제들만 구한다. (Lazy-Evaluation) Tabulation 부분 문제들의 답을 미리 다 구해두면 편하다. 테이블을 채워간다는 의미이다. 필요 없는 부분 문제들까지 전부 구한다. (Eager-Evalua..

kimjingyu
'컴퓨터 사이언스' 카테고리의 글 목록 (6 Page)