전체 글 187

[Codility]GenomicRangeQuery (Python, Kotlin)

https://app.codility.com/programmers/lessons/5-prefix_sums/genomic_range_query/start/ Codility Your browser is not supported You should use a supported browser. Read more app.codility.com 문제 설명 A:1, C:2, G:3, T:4 이며 'A,C,G,T'로 이루어진 문자열 S를 P[i]부터 Q[i]까지 범위의 인덱스로 잘랐을 때 해당 문자열 내의 최솟값을 구하는 문제이다. 즉, 'CAGCCTA' 라는 문자열 S가 주어지고, P[0] = 2, Q[0] = 4 이면 자른 문자열은 GCC가 되고 여기서 최솟값은 C = 2가 된다. 풀이 과정 이 문제를 풀면서 굉장..

데이터베이스 정규화(Normalization)란

데이터베이스 정규화(Normalization) 란? 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다. 정규화의 기본 목표는 관련이 없는 함수 종속성은 별개의 릴레이션으로 표현하는 것이다. 정규화된 결과를 정규형이라고 하며, 정규형은 기본 정규형 고급 정규형으로 나뉜다. 기본 정규형 : 제1정규형, 제2정규형, 제3정규형, BCNF(보이스/코드 정규형) 고급 정규형 : 제4정규형, 제5정규형 정규화의 장점으로는 이상 현상의 발생 가능성을 줄이지만, 단점으로는 연산 시간이 증가한다. 제 1 정규형 릴레이션에 속한 모든 속성의 도메인이 더 이상 분해되지 않는 원자값으로만 구성된 정규형이다. 제2정규형 릴레이션이 제1정규형에 속하고, 기본키가 아닌 모든 속성이 기본..

데이터베이스 조인(Join) 정리

JOIN(조인) JOIN이란 '연결하다' 라는 뜻을 지닌 단어이다. 이 단어의 뜻처럼, 데이터베이스에서는 둘 이상의 테이블을 연결해서 테이블을 검색하는 방법을 이야기 한다. JOIN의 종류 INNER JOIN OUTER JOIN CROSS JOIN SELF JOIN 그렇다면, 이제 다음과 같은 테이블 두 개를 가지고 각각의 조인에 대해 알아보자. [Star 테이블] ID Name DepNo 1 강호동 10 2 이수근 10 3 유재석 20 4 박명수 20 5 안재현 30 6 송민호 30 7 이병헌 NULL [Dep 테이블] DepNo DepName 10 1박2일 20 무한도전 30 신서유기 40 이경규가간다 1. INNER JOIN (이너조인) 이너조인은 위의 그림처럼 두 개의 테이블에서 공통된 요소들을 ..

데이터베이스 관계대수

관계 데이터 모델 관계 데이터 모델에서 지원하는 언어는 총 2가지가 있다. 관계 해석 - 원하는 데이터만 명시하고 질의를 "어떻게 수행할 것인가"는 명시하지 않는 선언적 언어 관계 대수 - "어떻게 질의를 수행할 것인가"를 명시하는 절차적 언어 관계 대수 (Relation Algebra) 릴레이션들을 다루는 연산들 기존의 릴레이션들로부터 새로운 릴레이션을 생성함. 연산자들을 사용하여 보다 복잡한 관계 대수식을 점차적으로 만들 수 있음. 기본적인 연산자들의 집합으로 이루어짐. 결과 릴레이션은 또 다른 관계 연산자의 입력으로 사용될 수 있음. 단일 혹은 두 개의 테이블들을 입력 받아 결과 테이블을 생성. 집합 연산을 토대로 만든 것이 관계 대수이며, 기본적으로는 집합 연산자에 속함. 특징 셀렉션 (Selec..

데이터베이스 키(key)의 개념 및 종류

데이터베이스 키(Key) 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때, 다른 튜플들과 구별 할 수 있는 유일한 기준이 되는 속성 키(key)의 특징 Key의 특징으로는 다음과 같은 종류가 있다. 이 특징들은 Key의 종류에 따라 만족하는 경우도 있고, 그렇지 않은 경우도 있다. 유일성 : 유일한 값을 가져야 함. 최소성 : 최소한의 값으로 식별할 수 있어야 함. 불변성 : 변하는 값이어선 안 됨. 키(Key)의 종류 키의 종류에는 슈퍼키, 후보키, 기본키, 대체키, 외래키가 있다. 다음의 릴레이션을 예시로 종류 별로 알아보도록 하자. 슈퍼키 유일성 O , 최소성 X 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키. 유일성을 만족하므로 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구..

데이터베이스(DB) 용어 및 기초개념 정리

데이터베이스 데이터베이스는 일반적으로 컴퓨터 시스템에 전자적으로 저장되는 구조화된 정보 또는 데이터의 조직화된 모음이다. 데이터베이스는 데이터베이스 관리 시스템(DBMS)에 의해 제어된다. 데이터베이스는 다음의 4가지 특징을 갖는다. 실시간 접근 (real-time accessibility) 계속 변화 (continuous evolution) 동시 공유 (concurrent sharing) 내용으로 참조 (content reference) 주로 사용되는 데이터베이스의 종류로 크게 2가지가 있다. 관계형 데이터베이스 행과 열로 구성된 테이블간의 관계를 나타내며, SQL을 통해 관리한다. MySQL, Maria DB, MS-SQL 등이 있다. NoSQL 관계형 데이터 베이스의 한계를 극복하기 위한 데이터 저..

[백준] 2579 계단 오르기 (Python 파이썬)

https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 문제 설명 위 링크에 주어진 문제 설명처럼, 계단을 오르는 문제이다. 단, 3번 연속된 계단을 이어서 오를 수는 없으며 마지막 계단은 무조건 밟아야 한다. 풀이 과정 이 문제는 DP(다이나믹 프로그래밍)을 이용해 앞에서 부터 최대값을 저장해 나가야 한다. 현재 계단을 밟는다면, 이전과 이이전을 연속해서 밟으면 안된다. 따라서, 현재 계단의 최댓값은 현재 + 이전 + 이이이전 or 현재 + 이이전 중에 선택을 ..

Algorithm/DP 2021.11.06

[백준] 1932 정수 삼각형 (Python 파이썬)

문제 설명 https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 주어진 그림처럼 삼각형 모양으로 숫자가 주어진다. 맨 위부터 시작해 제일 아래쪽으로 탐색을 하게되는데, 현재 지점에서 다음 지점(아래 지점)으로 이동할 때는, 왼쪽대각선과 오른쪽 대각선으로만 갈 수 있다. 이 방법으로 탐색했을 때, 탐색경로에 있는 숫자들을 모두 더했을 때의 최대가 되는 경로를 구하는 문제이다. 풀이 과정 이 문제는 DP(다이나믹 프로그래밍)을 이용해 앞에서부터 최댓값을 저장해나가며 푸는 문제이다. 가장 첫번째 열에 있는 숫자(7, 3, 8,..

Algorithm/DP 2021.11.06

Context Switching(문맥교환)

Context(문맥 / 콘텍스트) 컨텍스트는 사용자와 다른 사용자, 혹은 사용자와 시스템 또는 디바이스 간의 상호작용에 영향을 미치는 사람, 장소, 개체 등의 현재 상태를 규정하는 정보들이다. OS에서의 컨텍스트는 CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보들이다. 이러한 컨텍스트는 프로세스의 PCB(Process Control Block)에 저장된다. PCB(Process Control Block) PCB란 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓을 수 있는 저장 장소를 뜻한다. PCB는 프로세스 생성 시 만들어지며 주기억장치에 유지된다. 프로세스 상태 관리와 컨텍스트 스위칭을 위해 필요하다. 위 이미지는 PCB의 정보 저장 구조에 관한 이미지이고 PCB에는 다음과 같은 정보..

CS/운영체제 2021.11.06

CPU의 구조와 원리

중앙처리장치(CPU)란? 중앙처리장치(CPU)는 명령어의 해석과 자료의 연산, 비교등의 처리를 제어하는 컴퓨터 시스템의 핵심장치이다. 다양한 입력 장치로부터 정보를 입력받아 처리한 후, 그 결과를 출력장치로 보내는 일련의 과정을 제어하고 조정하는 일을 수행한다. CPU는 사람의 두뇌와 같이 컴퓨터의 모든 시스템을 제어, 처리하는 가장 핵심적인 장치라고 할 수 있다. CPU의 구성요소 CPU는 크게 제어 장치, 연산 장치(ALU), 레지스터 와 각 구성 요소를 연결하는 내부 버스로 구성되어 있다. 1. 제어 장치 (CU, Control Unit) 컴퓨터 시스템의 작동을 통제하고 지시하는 장치 기억 장치로부터 프로그랭 명령을 순차적으로 꺼내 해독하고, 해석에 따라서 명령어 실행에 필요한 제어 신호를 기억장치..

CS/컴퓨터 구조 2021.11.05