반응형

Computer Science 30

[Tech] MVC 디자인 패턴이란?

디자인 패턴이란? 디자인 패턴이란 개발을 하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 특정한 규약을 쉽게 접근할 수 있는 형태로 만든 것을 말한다. MVC란? MVC란 Model, View, Controller의 약자이다. Model은 데이터에 관련된 것이다. 게시판을 예로 들자면, 게시판에 있는 모든 글들은 데이터베이스에 데이터로 저장되게 된다. 이때 데이터의 형식을 지정하고 저장하고 불러오는 것과 같은 코드들이 Model에 속한다. 이러한 데이터들을 html과 css 등으로 시각적으로 볼 수 있게 해주는 영역이 View 파트이다. 마지막으로 model의 데이터를 view에 연결해서 사용자가 view 화면에서 model의 데이터를 gui로 읽고 쓰고 지우게 할 수 ..

[Algorithm] 알고리즘 별 시간 복잡도 비교해보기

문제 [-7, 4, -3, 6, 3, -8, 3, 4]로 이루어진 1차원 배열이 있을 때 합이 최대인 부분 구간을 찾는 알고리즘을 만들어보도록 하겠다. 최대 합을 갖는 구간은 [4, -3, 6, 3]으로 합이 10이다. ※python 언어를 사용하여 구현함. BruteForce 알고리즘 : O(N^2), O(N^3) inefficient_max_sum()함수는 주어진 배열의 모든 부분 구간을 순회하면서 그 합을 계산하는 알고리즘이다. 이 알고리즘은 O(N^2)개의 후보 구간을 검색하고, 각 구간의 합을 구하는데 O(N)의 시간이 걸리기 때문에 이 함수의 총 알고리즘 시간 복잡도는 O(N^3)이 된다. better_max_sum()함수는 위의 함수를 조금 변형하여서 O(N^2)의 시간 복잡도를 나타낸다. ..

[Algorithm] 시간 복잡도(time complexity)와 알고리즘 수행 시간

빠른 알고리즘을 만들기 위해 가장 먼저 해야 할 일은 바로 알고리즘의 속도를 측정하는 것이다. 이러한 알고리즘의 속도를 비교하는 가장 직관적인 방법은 각각을 프로그램으로 구현한 뒤 같은 입력에 대해 두 프로그램의 수행 시간을 측정하는 것일 것이다. 하지만 이러한 방법은 일반적인 기준이 되기에는 부적합하다. 프로그램의 수행 시간은 사용한 프로그래밍 언어, 하드웨어, 운영체제, 컴파일러까지 수많은 요소에 의해 바뀔 수 있기 때문이다. 그렇다면 알고리즘의 수행 시간을 어떤 기준으로 측정해야 할까? 반복문이 알고리즘 수행 시간을 지배한다. 한 가지 항목이 전체의 대소를 좌지우지하는 것을 지배한다(dominate)라고 표현한다. 알고리즘에서 이러한 역할을 하는 것이 바로 반복문이다. 물론 입력에 상관 없이 항상 ..

[Algorithm] 코딩과 디버깅에 관하여

읽기 쉬운 코드 코딩 테스트에서 좋은 성적을 내기 위한 비결을 당장 빨리 코드를 작성하는 것이 아니라 읽기 쉬운 코드를 작성하는 것이다. 복잡하고 읽기 어려운 코드는 디버깅에 있어서 어려움이 있고, 한 번에 정확하게 작성하기도 어렵기 때문이다. 아래는 특별히 중요한 몇 가지 원칙들에 관하여 설명한다. 전역 변수의 광범위한 사용 전역 변수를 많이 사용하면 프로그램의 흐름을 파악하기 어려워지고 때문에 대개 사용을 지양한다. 하지만 짧은 시간 안에 알고리즘을 평가하는 코딩 테스트의 경우에는 작성하는 코드의 구조가 매우 단순하고 각 변수를 읽고 쓰는 부분이 어디인지 비교적 명확하기 때문에 전역 변수를 사용하더라도 잃는 것이 많지 않다. 적극적인 코드 재사용 간결한 코드를 작성하기 위한 가장 직접적인 방법은 코드..

[Algorithm] Algorithm 문제에 접근하는 방법

문제 해결 능력이란? 알고리즘 문제란 대개 '어떤 값을 읽어 들여 어떤 값을 계산하는 프로그램을 작성하시오.'와 같은 형태를 갖는다. 이러한 문제를 풀기 위해서는 프로그램이 사용할 수 있는 최대 메모리와 시간제한 등 다양한 제약 조건이 있다. 이러한 제약 조건과 요구사항을 이해하고 최선의 방법을 찾아내는 능력을 문제 해결 능력이라고 한다. 문제 해결 능력은 프로그래밍 언어나 알고리즘처럼 실체가 없는 추상적인 개념이다. 그래서 단순한 반복만으로는 능력을 향상시키는데에 어려움이 있다. 좋은 문제 해결자가 되기 위해서는 좀 더 높은 차원의 수련이 필요하다. 이를 위해서는 자신이 문제를 어떤 방식으로 해결하는지를 의식하고 어느 부분이 부족한지, 어떤 부분을 개선해야 할지 파악해야 한다. 문제 해결 과정 1. 문..

[Tech] session/cookie 방식이란?

HTTP protocol의 특성 http protocal의 대표적인 특징 중 하나는 상태를 유지하지 않는다는 것이다. 클라이언트가 한번 요청을 하고 서버에서 응답을 하면 해당 클라이언트와 서버는 연결을 유지되지 않는다는 것이다. 위의 그림과 같이 http 프로토콜은 상태를 유지하지 않기 때문에 첫 번째 클라이언트의 요청에 대해서 서버가 응답을 보내면 똑같은 클라이언트가 두 번째 요청을 했을 때 서버에서는 두 번째 요청을 한 클라이언트가 첫 번째 요청을 한 클라이언트인지 인식하지 못한다. 이러한 특징 때문에 서버는 동시에 여러 개의 요청을 효과적으로 처리할 수 있지만 로그인, 장바구니 등 상태가 유지되어야 할 프로그램을 작성하기에는 무리가 있다. 이러한 단점을 보완하기 위한 방법이 바로 세션이다. Sess..

[Network] REST API와 Http Protocal

REST API 서버에 요청을 보낼 때는 주소를 통해 요청의 내용을 표현한다. 주소가 /index.html이면 서버에 index.html을 보내달라는 뜻인 것처럼 말이다. 하지만 요청이 항상 html일 필요는 없다. 예를 들어 /login이라는 주소를 통해 html을 요청하는 대신 세션 저장이라는 동작을 취할 수 있다. 이렇게 요청이 주소를 통해 들어오므로 서버가 이해하기 쉬운 주소를 사용하는 것이 좋다. 이기서 이번 포스팅의 주제인 REST API가 등장한다. REST API란 REpresentational State Transfer의 약자이다. 네트워크 구조의 한 형식으로 서버의 자원을 정의하고, 자원에 대한 주소를 지정하는 방법을 가리킨다. 주소는 의미를 명확히 전달하기 위해 명사로 구성된다. 예를..

[Database] SQL - SELECT

SELECT문은 테이블을 구성하는 튜플들 중에서 전체 또는 조건을 만족하는 튜플을 검색하여 주기억장치에 임시 테이블로 구성하는 명령문이다. SELECT문 형식 SELECT [PREDICATE] [테이블명.]속성명[AS 별칭][,[테이블명.]속성명 ...] FROM 테이블명[, 테이블명 ...] [WHERE 조건] [GROUP BY 속성명[, 속성명 ...] [HAVING 조건] [ORDER BY 속성명 [ASC | DESC][, 쏙성명[ASC | DESC] ...]]; SELECT절 PREDICATE : 검색할 튜플을 제한할 목적으로 사용되는 조건 ALL : 모든 튜플들을 검색할 때 사용되며, 기본값이다. DISTINCT : 중복된 튜플을 제거할 때 사용된다. DISTINCTROW : 중복된 튜플을 제거..

[Database] SQL - DDL

DDL (Data Definition Language)의 개념 DDL은 스키마(Schema), 도메인(Domain), 테이블(Table), 뷰(View), 인덱스(Index)를 정의하거나 변경 또는 제거할 때 사용하는 언어이다. DDL로 정의한 내용은 메타데이터(Metadata)가 되며, 시스템 카탈로그(System Catalog)에 저장된다. DDL의 유형 명령문 기능 CREATE 스키마, 도메인, 테이블, 뷰, 인덱스를 정의 ALTER 테이블에 대한 정의를 변경 DROP 스키마, 도메인 테이블, 뷰, 트리거, 인덱스를 제거 CREATE SCHEMA 스키마를 정의하는 명령문이다. 스키마는 하나의 사용자에 속하는 테이블과 기타 구성 요소 등을 그룹 짓기 위한 것이다. 스키마의 식별을 위한 스키마 이름고 ..

[Database] 키의 개념 및 종류

학번 주민등록번호 성명 150021 990806-1234567 홍길동 120022 976017-2345678 신민주 120023 990302-1323234 김형규 150024 940102-1234242 허진옥 180024 991020-2352152 임윤지 학번 과목명 050021 영어 050021 컴퓨터 020022 컴퓨터 020022 수학 020023 미술 020024 음악 020025 수학 키란 DB에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성을 말한다. 슈퍼키 (Super Key) 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키를 말한다. 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않는다. 슈퍼키는 릴레이션을 구성하는..

반응형