분류 전체보기
-
알고리즘, 문제해결패턴, Divide and ConquerData Structure & Algorithm 2024. 6. 12. 22:02
Divide and ConquerDivide and Conquer의 기본 개념은 다음과 같습니다:분할(Divide): 해결해야 할 문제를 동일한 유형의 더 작은 부분 문제로 나눕니다.정복(Conquer): 각 부분 문제를 재귀적으로 해결합니다. 부분 문제가 충분히 작으면 직접 해결합니다.결합(Combine): 부분 문제의 해를 합쳐서 원래 문제의 해를 얻습니다.예제예제 1: 병합 정렬 (Merge Sort)병합 정렬은 Divide and Conquer를 사용하는 대표적인 정렬 알고리즘입니다. 배열을 반으로 나눈 후 각각을 정렬하고, 정렬된 부분 배열을 합칩니다.function merge(arr1, arr2) { let idx1 = 0; let idx2 = 0; let result = []; whi..
-
알고리즘, 문제 해결 패턴, Sliding WindowData Structure & Algorithm 2024. 6. 12. 21:37
Sliding WindowSliding Window는 프로그래밍에서 배열이나 문자열과 같은 연속된 데이터 구조 내에서 부분 집합의 합, 평균, 최대값 또는 최소값 등을 효율적으로 계산하기 위해 사용하는 알고리즘 기법입니다. 이 기법은 고정된 크기나 가변 크기의 윈도우를 사용하여 문제를 해결합니다.기본 개념Sliding Window의 기본 개념은 다음과 같습니다:윈도우 설정: 초기 윈도우 크기나 시작점을 설정합니다.윈도우 이동: 데이터를 한 번에 하나씩 이동하면서 윈도우 내 값을 갱신합니다.결과 갱신: 윈도우 내 값을 기준으로 필요한 결과를 갱신합니다.예제예제 1: 고정된 크기의 윈도우를 사용한 최대 합 찾기다음은 고정된 크기의 윈도우를 사용하여 배열 내 연속된 요소들의 최대 합을 찾는 예제입니다.func..
-
알고리즘, 문제해결 패턴, Mulitple PointersData Structure & Algorithm 2024. 6. 12. 21:35
Mulitple PointersMultiple Pointers의 기본 개념은 다음과 같습니다:포인터 설정: 배열이나 문자열의 시작과 끝, 또는 특정 조건에 따라 포인터를 설정합니다.포인터 이동: 특정 조건을 만족할 때까지 포인터를 이동합니다.조건 만족 확인: 포인터가 특정 조건을 만족하는지 확인하여 문제를 해결합니다.시간 복잡도Multiple Pointers를 사용하는 알고리즘의 시간 복잡도는 일반적으로 O(n)입니다. 이는 배열이나 문자열을 한 번만 순회하면서 문제를 해결하기 때문입니다.활용 예시Multiple Pointers 기법은 다음과 같은 다양한 문제에서 유용하게 사용됩니다:두 개의 포인터를 사용하여 배열 내 특정 조건을 만족하는 요소 찾기중복 요소 제거문자열 내 특정 패턴 찾기정렬된 배열에서 ..
-
알고리즘, 문제해결 패턴, Frequency CountersData Structure & Algorithm 2024. 6. 12. 21:32
Frequency CountersFrequency Counters는 프로그래밍에서 특정 요소의 발생 빈도를 효율적으로 계산하는 알고리즘 기법입니다. 주로 배열, 문자열 또는 다른 자료 구조 내에서 요소의 빈도를 세어야 할 때 사용됩니다. 이 방법은 일반적으로 시간 복잡도를 줄이고 코드를 보다 효율적으로 만들기 위해 사용됩니다.기본 개념Frequency Counter의 기본 개념은 다음과 같습니다:자료 구조 선택: 주로 해시맵(또는 객체)을 사용하여 각 요소의 발생 빈도를 저장합니다.반복문 사용: 데이터를 한 번 순회하면서 각 요소의 빈도를 해시맵에 기록합니다.결과 분석: 필요에 따라 빈도 데이터를 사용하여 문제를 해결합니다.시간 복잡도이 자바스크립트 구현은 각 배열 또는 문자열을 한 번만 순회하기 때문에..
-
운영체제Computer Science 2024. 4. 25. 20:39
목차운영체제와 컴퓨터메모리프로세스와 스레드3.1 운영체제와 컴퓨터운영체제는 사용자가 컴퓨터를 쉽게 다룰 수 있게 해주는 인터페이스입니다. 한정된 메모리나 시스템 자원을 효율적으로 분배해줍니다.3.1.1 운영체제의 역할과 구조컴퓨터는 하드웨어와 소프트웨어(유저 프로그램)를 관리하는 일꾼인 운영체제와 CPU, 메모리 등으로 이루어져 있습니다. 운영체제의 역할과 구조는 다음과 같습니다.운영체제의 역할CPU 스케줄링과 프로세스 관리CPU 소유권을 어떤 프로세스에 할당할지프로세스의 생성과 삭제자원 할당 및 반환을 관리메모리 관리한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리디스크 파일 관리디스크 파일을 어떠한 방법으로 보관할지 관리I/O 디바이스 관리I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 ..
-
네트워크 (2)Computer Science 2024. 4. 19. 21:07
목차 네트워크 기기 IP 주소 HTTP 2.3 네트워크 기기 2.3.1 네트워크 기기의 처리 범위 네트워크 기기는 계층별로 처리 범위를 나눌 수 있습니다. 물리 계층을 처리할 수 있는 기기 데이터 링크 계층을 처리할 수 있는 기기 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가능합니다. 애플리케이션 계층: L7 스위치 인터넷 계층: 라우터, L3 스위치 데이터 링크 계층: L2 스위치, 브리지 물리 계층: NIC (Network Interface Card), 리피터, AP(Access Point) 예를 들어 L7 스위치는 애플리케이션 계층을 처리하는 기기로, 그 밑의 모든 계층의 프로토콜을 처리할 수 있습니다. 하지만 AP는 물리 계층밖에 처리하지 못합니다. 2.3.2 애플리케..
-
네트워크 (1)Computer Science 2024. 4. 18. 22:03
목차 네트워크 기초 TCP/IP 4계층 모델 2.1 네트워크의 기초 네트워크란 노드와 링크가 서로 연결되어 있으며 리소스를 공유하는 집합을 의미합니다. 여기서 노드란 서버, 라우터, 스위치 등 네트워크 장치를 의미하고 링크는 유선 또는 무선을 의미합니다. 2.1.1 처리량과 지연 시간 처리량(throughput)이란 링크를 통해 전달되는 단위 시간당 데이터양을 말합니다. 단위로는 bps(bits per second)를 씁니다. 초당 전송 또는 수신되는 비트 수를 의미합니다. 처리량은 다음과 같은 상황에 영향을 받습니다. 사용자들이 많이 접속할 때마다 커지는 트래픽 네트워크 장치 간의 대역폭 네트워크 중간에 발생하는 에러 장치의 하드웨어 스펙 지연시간(latency)이란 요청이 처리되는 시간을 말하며 어떤..
-
프론트엔드 테스트 코드 작성하기 - 기초편React.js & Next.js 2024. 3. 28. 23:19
목차 prerequisites Project Basic Code Test Code Explain each test codes Results 마치며 1) Prerequisites 이번 장에서는 vs code의 extension인 Jest Runner를 사용합니다. 이전 장에서 다룬 레포지토리를 확장하여 사용합니다 2) Project 코드는 해당 레포지토리에서 다운로드하실 수 있습니다. https://github.com/junh0328/react-test GitHub - junh0328/react-test Contribute to junh0328/react-test development by creating an account on GitHub. github.com 기본적인 UI를 위해, styled-in-..