전체 글

전체 글

    [TypeScript] 추상 클래스(Abstract Class)

    추상화(Abstraction) 추상화는 객체 지향 프로그래밍(OOP:Object-Oriented Programming)의 핵심 아이이디어 중 하나이다. 복잡성을 최소화하고 고급 아키텍처 문제를 해결하는데 도움이 되는 기술이며, 하위 수준의 세부 사항을 미리 구현할 필요가 없다. 상위 수준에 집중하고 나중에 세부 사항을 구현한다. OOP에서는 두 가지 유형의 클래스가 존재한다. 추상 클래스와 구체 클래스이다. 위에서 말한 상위 수준은 추상 클래스이며 하위 수준은 구체 클래스이다. 구체 클래스 new 키워드를 사용하여 생성할 수 있다. 추상 클래스 추상 클래스는 구체 클래스가 가져야 하는 속성과 함수를 설정하는 클래스 추상 클래스는 클래스 앞에 abstract 키워드를 사용하여 선언 new 키워드를 사용하여..

    [CS] 트랜젝션

    [CS] 트랜젝션

    트랜잭션이란 트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다. 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다. 하나의 트랜잭션은 Commit되거나 Rollback된다. 트랜잭션의 성질 Atomicity(원자성) 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다. 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다. Co..

    [CS] OSI 7 계층

    [CS] OSI 7 계층

    OSI 7 계층 OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것 계층을 나눈 이유는 통신이 일어나는 과정이 단계별로 파악할 수 있기 때문 1계층 - 물리계층(Physical Layer) 이 계층에서는 주로 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송 사용되는 통신 단위는 비트이며 이것은 1과 0으로 나타내어지는, 즉 전기적으로 On, Off 상태라고 생각하면 된다. 이 계층에서는 단지 데이터를 전달만 할뿐 전송하려는(또는 받으려는)데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경 쓰지 않는다. 이 계층에 속하는 대표적인 장비는 통신 케이블, 리피터, 허브등이 있다. 케이블, 리피터, 허브를 통해 데이터 전송 2계층 - 데이터 링크계층(DataLin..

    [CS] 해시(Hash)와 해시 충돌 해결 방법

    [CS] 해시(Hash)와 해시 충돌 해결 방법

    해시(Hash) 데이터를 효율적으로 관리하기 위해 임의의 길이 데이터를 고정된 길이의 데이터로 매핑 해시 함수: 데이터를 효율적으로 관리하기 위해 임의의 길이의 데이터를 수학적 연산을 통해 고정된 길이의 데이터로 매핑하는 함수이다. 해시 함수에 의해 얻어지는 값을 해시 코드, 해시라고 한다. 해시 테이블: 키와 값을 매핑해둔 데이터 구조이다. 해시 함수로 얻은 해시를 키로 활용하여 index로 사용하고 해당 index에 데이터를 저장하여 효율적인 검색을 위해 사용된다. 해시 순서 해당 원소의 해시 함수를 이용하여 해시값을 얻는다. 해시값을 주소로 하는 위치에 원소를 저장한다. 저장 후 검색 시에도 원소의 해시값으로 계산하여 해당 위치로 이동한다. 추상 자료형 사전구조 인터페이스와 기능 구현을 분리한 자료..

    [CS] 프로세스와 스레드

    [CS] 프로세스와 스레드

    프로세스(Process) 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태 프로세스는 Code, Data, Stack, Heap 영역의 네가지 구조로 되어있다. 코드 영역(code area) : 프로그래머가 작성한 프로그램이 코드 영역에 작성된다. 데이터 영역(data area) : 코드가 실행되면서 사용한 변수나 파일들의 각종 데이터들이 모여있다. 스택 영역(stack area) : 호출한 함수가 종료되면 되돌아올 메모리의 주소를 스택에 저장하거나 변수 사용 범위에 영향을 미치는 영역을 구현 할때 사용된다. 힙 영역(heap area) : 동적으로 할당되는 데이터들을 위해 존재하는 공간이다. 서로 다른 프로세스간의 메모리 공간 접근은 허용되지 않는다. 운영체제 관점에서는 프로세스가..

    [백준 16953] A → B

    [백준 16953] A → B

    https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net B에서 A로 찾아나가는 식으로 해결하면 간단하다 let [A,B] = require('fs').readFileSync('/dev/stdin').toString().trim().split(' ').map(Number) let cnt = 1; // 연산횟수 카운트 (문제내용상 1부터 카운트) while(A

    [백준 13305] 주유소 / Node.js / 그리디 알고리즘 기초

    [백준 13305] 주유소 / Node.js / 그리디 알고리즘 기초

    https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 문제 지문이 길어도 요점을 이해하는 것이 중요 1. 기름값이 저렴한지 비교한다. 2. 더 저렴한 주유소까지만 갈 수 있는 기름만 주유하고 이동한다. 본 문제에선 단위의 값이 크므로 BigInt를 사용하여야 한다. const input = require('fs').readFileSync('/dev/stdin') .toString().trim() .split('\n') .map((v)=..

    [백준 11047] 동전0 / Node.js / 그리디 알고리즘 기초

    [백준 11047] 동전0 / Node.js / 그리디 알고리즘 기초

    https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 문제를 풀 수 있는 방법은 다양하지만 가장 효율적이고 쉬운 방법을 찾자 let [I,...input] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n') let K = +I.split(' ')[1] let coins = input.map(Number).so..

    [백준 1931] 회의실 배정 / Node.js

    [백준 1931] 회의실 배정 / Node.js

    https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 그리디 알고리즘(Greedy Algorithm, 탐욕 알고리즘) 매 상황에서 최선의 선택을 하는 알고리즘을 의미 알고리즘 문제를 풀기 위한 최적의 아이디어를 떠올릴 수 있는 능력을 요구한다 본 문제에선 시작 시간이 빨라도 끝나는 시간이 너무 늦어버리면 다음 회의를 하지 못하는 경우가 생길 수 있다. => 최대한 회의실을 사용하기 위해서는 끝나는 시간이 빨라야 한다. 주의사항으로 회의실을 이용하는 시간은 겹칠 수 없다는 점도 유의한다. 또한, 끝나는 시간이 같을 경우에는 일찍 시작을 해야 최대한 더 많이 이용을 할..

    [Javascript] 자료구조 (Data Structure)

    [Javascript] 자료구조 (Data Structure)

    자료구조란 데이터 값들을 저장하거나 조직하는 방법. 각 원소들이 논리적으로 정의된 규칙에 의해 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현한 것. 연산에 사용되는 컴퓨터의 메모리 자원은 매우 한정적인데 반해 처리해야 할 데이터는 무수히 많을 수 있다. 따라서 이 메모리 공간을 효율적으로 사용해야 하는데 필요한 것이 자료 구조이다. 효율적인 자료 구조의 선택 → 효율적인 알고리즘의 선택이 된다. 1) 단순 구조(Primitive Data Structure) 프로그래밍에서 사용되는 기본 데이터 타입 Javascript에는 6개의 원시 타입(Number, String, Boolean, null, undefined, Symbol)이 있다. (Symbol - ES6 버전의 Jav..