목록분류 전체보기 (62)
Live Today
사용자 수준 스레드와 커널 수준 스레드는 생성 주체가 누구냐에 따라 구분된다. 사용자가 라이브러리를 통해 만들고 관리하는 스레드는 사용자 수준 스레드이고, OS의 커널이 만들고 관리하는 스레드는 커널 수준 스레드이다. ✅ 사용자 수준 스레드 사용자가 스레드 관련 라이브러리로 구현해 사용하는 스레드를 사용자 수준 스레드라고 한다. 스레드와 관련된 모든 행위를 사용자 영역에서 하기 때문에, 커널은 사용자 수준 스레드의 존재를 알지 못하고, 스레드 교환에 개입하지 않는다. 사용자 수준 스레드 N개가 커널 수준 스레드 1개에 매핑되므로, 다대일 스레드 매핑이라고 한다. 장점 커널에 독립적으로 스케줄링을 할 수 있어 모든 운영체제에 적용할 수 있다. 이식성이 높다. 스케줄링이나 동기화를 위해 커널을 호출하지 않으..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/AbwEW/btrXm8UNJKZ/4DWg9rtSnbm2bxueE8IacK/img.png)
PCB는 OS의 스케줄러에 의해 Context Switching되는 프로세스의 정보 단위를 의미하고 TCB는 스레드 라이브러리에 의해 Context Switching되는 스레드의 정보 단위를 의미한다. 즉, 우리가 흔히 배우는 OS의 스케줄러가 스케줄링 해주는 것은 프로세스의 PCB이고, TCB는 프로세스에 있는 스레드 라이브러리에 의해 스케줄링 되는 것이다. 그래서 Context Switching이 일어날 때 멀티 프로세스를 통해 PCB를 컨텍스트 스위칭 하는 것 보다 멀티 스레드를 통해 TCB를 컨텍스트 스위칭 하는 것이 더 오버헤드가 적다는 것이다.(위의 그림만 봐도 TCB가 PCB보다 작은 크기를 가지고 있다.) PCB는 운영체제에게 프로세스에 대한 중요한 정보를 제공해주는 자료구조 테이블이다. ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/HaUVA/btrXhP8kems/YL88Byy1XULkhkALcnx8Y0/img.png)
프로그램이란 ? 어떤 작업을 위해 실행할 수 있는 파일로, 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 말한다. 프로세스란 ? 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램으로, 메모리에 올라와 실행되고 있는 프로그램의 인스턴스를 말한다. 프로세스는 운영체제로부터 시스템 자원을 할당받는 작업의 단위이며 즉, 동적인 개념으로는 실행된 프로그램을 의미한다. 프로세스 특징 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 한 프로세스가 다..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b5Kqx7/btrW7TYm3Vx/3PaHiJydYJEOFNENZkSB4K/img.png)
https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 💡 [투포인터] 알고리즘 선형 시간으로 알고리즘을 풀 수 있게 만들어 줌 연속적인 값들을 이용해 푸는 문제에 적합 정렬 후 풀이 ✅ 정답 풀이 package algo; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringToke..
React 프로젝트 만들기 1. Node.js 설치 2. npm 또는 yarn 설치 3. Visual Studio Code 설치 4. create-react-app으로 프로젝트 만들기 1. Node.js 설치 https://nodejs.org/ko/download/ 다운로드 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org LTS 버전 설치 2. npm과 yarn 차이 Node.js를 설치하면 Node.js 패키지 매니저 도구인 npm이 설치된다. npm으로 수많은 개발자가 만든 패키지를 설치하고 설치한 패키지의 버전을 관리할 수 있다. 리액트 역시 하나의 패키지이다. yarn은 npm을..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/OKOPs/btrWVJVBxVs/CVohkcM5hwpuLvSfLFLbL0/img.png)
https://www.acmicpc.net/problem/17837 17837번: 새로운 게임 2 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하 www.acmicpc.net 💡 틀린 이유 : 자료구조 선정을 잘못함 ! Queue는 First - In - First - Out 으로 가장 먼저 들어온 데이터가 가장 먼저 나간다. Queue의 2차원 배열로 처음에 구현했었는데 이렇게 하면 현재 탐색하는 말 번호와 같은 칸에 있는 말들 중, 그 위에 있는 말들이 아닌 그 아래 있는 말들이 빠져나오기 때문에 통과하지 못했다. 따라서 ArrayList타입으로 2차원 배열을 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/IhLAt/btrWZWsWa3t/cgmHJSYfgxS8Ca003mk78k/img.png)
1-1. 리액트 이해 리액트는 자바스크립트 라이브러리 구조가 MVC, MVW 등인 프레임워크와 달리, 오직 V(View)만 신경 쓰는 라이브러리 컴포넌트 : 리액트 내 특정 부분이 어떻게 생길지 정하는 선언체 컴포넌트는 재사용이 가능한 API로 수많은 기능들을 내장 컴포넌트 하나에서 컴포넌트의 생김새와 작동 방식 정의 사용자 화면에 뷰를 보여주는 것을 렌더링이라고 함. 1-2. 초기 렌더링 render함수 → render() { . . .} 컴포넌트가 어떻게 생겼는지 정의하는 역할을 함. 객체 반환 컴포넌트 내부에 또 다른 컴포넌트들이 들어갈 수 있다. 이때 render 함수를 실행하면 그 내부에 있는 컴포넌트들도 재귀적으로 렌더링함. 최상위 컴포넌트의 렌더링 작업이 끝나면, HTML 마크업을 만들고, ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bomEOS/btrNyF2Cmoy/IjCkwHCSKIHtGfImYoiwV0/img.png)
📋 목차 Trie 자료구조란? Trie 장/단점 Trie 코드 구현 Trie 관련 알고리즘 문제 1️⃣ Trie 자료구조란? 문자열에 특화된 자료 구조인 트라이(Trie)는 문자열 집합을 표현하는 트리 자료구조이다. 우리가 원하는 원소를 찾는 작업을 O(n)에 해결 할 수 있는 자료구조이다. 여기서 n은 문자열의 길이입니다. 루트 노드가 되는 가장 최상위 노드에는 어떠한 단어도 들어가지 않고, 루트 아래 노드부터 문자열들의 접두사가 하나씩 나타나게 된다. 💡우리가 사전에서 단어를 찾을 때와 비슷한 메커니즘입니다. 한 글자씩 찾아가며 문자열에 도달합니다. 2️⃣ Trie 장단점 트라이(Trie)는 문자열 검색을 빠르게 한다. 문자열을 탐색할 때, 하나하나씩 전부 비교하면서 탐색을 하는 것보다 시간 복잡도 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/P2QdL/btrMxTmDHGz/5UCRa4L54TQ6UOkhJh9Z7k/img.png)
📋 목차 B-Tree란? B-Tree 특징 B+ Tree란? B+ Tree 특징 B-Tree와 B+ Tree 비교 B-Tree 이용 사례 1️⃣ B-Tree란? 데이터를 정렬하여 탐색, 삽입, 삭제 및 순차 접근이 가능하도록 유지하는 트리형 자료구조 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 자료구조의 일종 → 탐색 성능을 높이기 위해 균형있게 높이를 유지하는 균형 트리입니다. → (단, B-Tree는 ‘이진 트리’가 아님 !) 2️⃣ B-Tree 특징 노드의 데이터 수가 N이면, 자식 수는 N+1 각 노드의 데이터는 정렬된 상태이어야 함 루트 노드는 적어도 2개 이상의 자식을 가져야 함 루트 노드를 제외한 모든 노드는 적어도 M/2개의 데이터를 가지고 있어..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BKHBN/btrKSMccnWf/7EBtFZn9W99gYDuVhjOIx1/img.png)
📋 목차 Binary Search Tree(이진 탐색 트리)란? Binary Search Tree(이진 탐색 트리)의 4가지 조건 Binary Search Tree(이진 탐색 트리) 연산 탐색 연산 삽입 연산 삭제 연산 Binary Search Tree(이진 탐색 트리) 성능 1️⃣ Binary Search Tree(이진 탐색 트리)란? 이진탐색트리(BST: Binary Search Tree)는 이진트리 기반의 탐색을 위한 자료구조이다. 이진탐색의 효율적인 탐색 능력을 가지며, 삽입과 삭제가 가능한 것이 특징이다. 위의 이진 탐색 트리에서, 15의 값을 가진 노드의 왼쪽 서브트리에 있는 값들(5,7,10)은 루트 노드인 15보다 모두 작고, 오른쪽 서브트리에 있는 값들(16, 18, 19, 20)은 모두..