분류 전체보기 142

[Javascript] 프로토타입(prototype)

자바스크립트는 클래스 기반 객체지향 프로그래밍 언어보다 효율적이며 더 강력한 객체지향 프로그래밍 능력을 지니고 있는 프로토타입 기반의 객체지향 프로그래밍 언어이다. 우리가 흔히 사용하는 Array, Maps, Sets 등도 모두 프로토타입을 기반으로 만들어졌다. 자바스크립트는 프로토타입을 기반으로 상속을 구현하여, 불필요한 중복을 제거한다. 만약 프로토타입이 없었다면 생성자 함수에 메서드를 넣어 사용하게 되어 엄청난 중복이 일어난다. 하지만 프로토타입을 사용하면 메서드가 오직 한개만 존재하게 된다. // 자바스크립트 프로토타입 기반의 상속 function Greeting(name) { this.name = name //아래 과정은 사용하지 말아야 한다(중복 발생) //this.hello = functio..

JavaScript 2021.09.03

[Javascript] 자바스크립트에서 함수(Function)도 객체(Object)다.

일급 객체 다음과 같은 조건을 만족하는 객체를 일급 객체(First-Class Citizen)라고 한다 1. 무명의 리터럴로 생성할 수 있다. 즉 런타임에 생성이 가능하다. 2. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. 3. 함수의 매개변수에 전달할 수 있다. 4. 함수의 반환값으로 사용할 수 있다. // 1. 함수는 무명의 리터럴로 생성할 수 있다. // 2. 함수는 변수에 저장할 수 있다. // 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다. const increase = function (num) { return ++num; }; const decrease = function (num) { return --num; }; // 2. 함수는 객체에 저장할..

JavaScript 2021.09.03

[React] JSX?

JSX란? JavaScript를 확장한 문법이며 XML과 매우 유사하게 생겼다. 외관상 HTML같은 마크업 언어를 리터럴로 입력하는 것으로 보이는데, 빌드 시 Babel에 의해 자바스크립트로 변환된다. (공식적인 자바스크립트 문법은 아니다) function App(){ return ( Hello react ); } 위 코드는 아래의 코드로 랜더링된다 function App(){ return React.createElement("div", null, "Hello", React.createElement("b", null "react")); } 컴포넌트를 랜더링 할 때마다 React.createElement를 하는 것은 매우 번거로울 것이다. JSX를 사용하면 보다 편하게 UI를 랜더링 할 수 있다. Reac..

React 2021.09.02

Virtual DOM

DOM virtual DOM에 대해 알아보기 전에 DOM은 어떻게 작동하는지를 알아보자. DOM(Document Object Model)은 문서 객체 모델이라고 하는데 결국은 브라우저에서 다룰 HTML 문서를 파싱하여 "문서의 구성요소들을 객체로 구조화하여 나타낸 것"이다. DOM의 동작 과정 HTML을 파싱하여 DOM 객체를 생성하고, CSS를 파싱하여 스타일 규칙을 만든다. 이 두개를 합쳐서 실제로 웹 브라우저에 보여져야할 요소를 표현한 "렌더 트리"라는 것을 만든다. 이 렌더 트리를 기준으로 레이아웃을 배치하고 색을 칠하는 등의 작업을 한다. 요즘 흔히 접하는 큰 규모의 웹 애플리케이션, 예를 들어 트위터나 페이스북은 수많은 데이터가 로딩된다. 그리고 각 데이터를 표현하는 요소(element) 개수..

WEB 2021.09.02

[프로그래머스] 메뉴 리뉴얼 (level2, c++)

문제 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다. 단, 코스요리 메뉴는 최소 2가지 이상의 단품메뉴로 구성하려고 합니다. 또한, 최소 2명 이상의 손님으로부터 주문된 단품메뉴 조합에 대해서만 코스요리 메뉴 후보에 포함하기로 했습니다. 예를 들어, 손님 6명이 주문한 단품메뉴들의 조합이 다음과 같다면, (각 손님은 단품메뉴를 2개 이상 주문해야 하며, 각 단품메뉴는 A ~ Z의 알파벳 대문자로 표기합니다.) 손님 번호 주문한 단품메뉴 조합 1번 손님 A, B, C, F, G 2번 손님 A, C 3번 손님 C, D, E 4번 손님 A, C, D, E 5번 손님 B, C..

[운영체제] 스레드(Thread), 스레드 모델

스레드(Thread) 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다. 하나의 프로세스가 한 번에 하나의 작업만 수행하는 것은 싱글스레드(Single thread)이며, 하나의 프로세스가 동시에 여러 작업을 수행하는 것은 멀티스레드(Multi thread)라고 한다. 프로세서와 메모리가 발전하며 가능해진 기술이다. 멀티 스레드(Multi Thread) 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상 시킨다. 하나의 프로그램에서 동시에 여러 개의 일을 수행할 수 있도록 해줌 (분산처리를 통해 동시에 실행되는 것 처럼 보이는 것) 장점 응답성(responsiveness): 프로그램의 일부분(스레드)이 중단되거나 긴 작업을 ..

운영체제 2021.09.01

[백준] 2263번: 트리의 순회 (c++)

문제 n개의 정점을 갖는 이진 트리의 정점에 1부터 n까지의 번호가 중복 없이 매겨져 있다. 이와 같은 이진 트리의 인오더와 포스트오더가 주어졌을 때, 프리오더를 구하는 프로그램을 작성하시오. 2263번: 트리의 순회 첫째 줄에 n(1≤n≤100,000)이 주어진다. 다음 줄에는 인오더를 나타내는 n개의 자연수가 주어지고, 그 다음 줄에는 같은 식으로 포스트오더가 주어진다. www.acmicpc.net 문제조건 1≤n≤100,000 풀이 인오더와 포스트오더를 구해보면 포스트 오더의 가장 마지막 값이 루트 값임을 알 수 있다. 인오더는 루트값을 기준으로 왼쪽과 오른쪽으로 나뉜다. 인오더를 통해 오른쪽과 왼쪽으로 나눈 후, 포스트오더에서 이 값들의 가장 마지막 값을 보면 루트 값을 알 수 있다. 코드 #in..

알고리즘/BOJ 2021.09.01

[백준] 12852번: 1로 만들기 2 (c++)

문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 12852번: 1로 만들기 2 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다. www.acmicpc.net 문제조건 첫째 줄에 1보다 크거나 같고, $10^{6}$보다 작거나 같은 자연수 N이 주어진다. 풀이 가장 전형적인 DP문제. DP로 풀어주지 않으면 예외가 너무 많아서 풀이가 불가능하다. top-down으로도 풀이가 가능할 것 같지만 bottom-up이 쉬울 것 같아서 ..

알고리즘/BOJ 2021.08.30

[운영체제] 프로세스 구조, 생성, 종료, 통신

프로세스 구조 프로세스는 실행 중에 프로세스 생성 시스템 호출을 이용하여 새로운 프로세스를 생성할 수 있다. 이때 프로세스 생성 순서를 저장하고 부모-자식 관계를 유지하여 계층적으로 생성한다(트리구조). 프로세스를 생성하는 프로세스를 부모 프로세스라 하고, 생성되는 프로세스를 자식 프로세스(또는 서브 프로세스)라 한다. 대부분의 운영체제는 프로세스를 식별할 때 process id(pid) 로 구분하는데 보통 정수값이다. pid가 1인 init프로세스가 루트 부모 프로세스 역할을 수행하며, 시스템이 부팅되면 init프로세스는 다양한 사용자 프로세스를 생성한다. 보통 ps -ef 명령이나 ps aux 명령을 사용해서 현재 돌아가고 있는 프로세스를 확인할 수 있다. 프로세스 생성 시스템 콜의 fork() 함수..

운영체제 2021.08.27

[운영체제] 프로세스 스케줄링

프로세스 스케줄링? 프로세스 스케줄링이란 프로세스가 생성되어 실행될 때 필요한 시스템의 여러자원을 해당 프로세스에게 할당하는 작업을 뜻 하며, 대기 시간은 최소화 하고 최대한 공평하게 처리하는 것을 목적으로한다. 스케줄링 목적/평가기준 CPU 이용률(CPU utilization) : CPU를 얼마나 바쁘게 하는가. 높을수록 좋다. 처리율(Throughput) : 단위시간당 얼마나 많은 프로세스들이 완료되는가. 클 수록 좋다. 소요시간(Turnaround time) : 프로세스가 요청된 후 완료하기까지 얼마나 걸리는가. 메모리 접근 시간, 대기 큐에서의 대기 시간, CPU에서의 실행 시간, I/O 시간 등의 합으로 계산한다. 짧을수록 좋다. 대기시간(Waiting time) : 프로세스가 대기 큐에서 기다..

운영체제 2021.08.27
반응형