본문 바로가기

전체 글

(118)
백트래킹_부분 집합 생성 (Subset Generation) 부분 집합 생성(Subset Generation)은 주어진 집합의 모든 부분 집합을 구하는 문제이다. 부분 집합(Subset) 생성의 개념주어진 집합이 있을 때, 그 집합의 부분 집합이란 주어진 원소들 중 일부 또는 전체를 선택한 새로운 집합을 말한다. 부분 집합에는 빈 집합과 전체 집합도 포함된다. 주어진 집합에 포함된 원소의 개수가 n개라면, 그 집합의 부분 집합의 개수는 2^n개이다. 이는 각 원소를 선택하거나 선택하지 않음으로써 발생하는 모든 경우의 수이다.예시주어진 집합이 {1, 2, 3}이라고 할 때, 부분 집합은 다음과 같다:[][1][2][3][1, 2][1, 3][2, 3][1, 2, 3]백트래킹을 사용한 부분 집합 생성백트래킹(Backtracking)은 모든 가능한 선택을 시도하면서, ..
뮤텍스(Mutex)와 세마포어(Semaphore) 뮤텍스(Mutex)와 세마포어(Semaphore)는 동시성 제어 기법으로, 여러 프로세스나 스레드가 공유 자원에 접근할 때 발생하는 경쟁 조건(race condition)을 방지하기 위해 사용된다. 이 두 개념은 동기화 문제를 해결하는 데 중요한 역할을 하며, 각기 다른 특성과 용도로 사용된다.1. 뮤텍스(Mutex)뮤텍스란?Mutex는 Mutual Exclusion의 약자로, 상호 배제를 의미한다. 하나의 스레드나 프로세스만이 특정 시점에 공유 자원에 접근할 수 있도록 잠금(Lock)을 제공하는 동기화 도구이다.단일 사용자: 특정 공유 자원에 대해 동시에 하나의 스레드만 접근할 수 있다. 다른 스레드가 동일한 자원에 접근하려면, 먼저 사용 중인 스레드가 자원의 잠금을 해제해야 한다.뮤텍스의 동작 원리잠..
백트래킹 (Backtracking)_N-Queen 백트래킹(Backtracking)은 해를 찾기 위해 탐색 공간을 체계적으로 탐험하는 알고리즘 기법이다. 문제를 해결할 때 가능한 모든 경우의 수를 고려하지만, 불필요한 탐색을 줄이기 위해 잘못된 경로를 빨리 차단하고 다시 이전 상태로 돌아가는(백트래킹하는) 방식으로 동작한다.백트래킹은 주로 재귀적인 방식으로 구현되며, 해를 찾기 위해 완전 탐색을 수행하되, 탐색 중 조건을 만족하지 않는 경로는 더 이상 탐색하지 않고 빠르게 포기하여 효율성을 높인다. 백트래킹의 핵심 개념후보해 생성(Partial Solution):문제를 해결하는 과정에서, 해결 가능한 해의 일부를 먼저 만들어 본다. 이때, 해가 아직 완성되지 않았을 수 있다.유망성 검사(Pruning):현재까지 만든 해가 유효한지(해를 구할 가능성이 있..
최대 부분 배열 합 (Maximum Subarray Sum) 최대 부분 배열 합(Maximum Subarray Sum) 문제는 주어진 배열에서 연속된 부분 배열 중에서 가장 큰 합을 갖는 부분 배열을 찾는 문제이다. 이 문제는 배열에서 연속된 요소들의 합을 최대화하는 부분 배열을 찾는 것이 목표이다.문제 정의주어진 배열에서 연속된 부분 배열의 합이 최대가 되는 부분 배열을 찾는다.배열의 원소는 양수와 음수 모두 포함될 수 있다.예를 들어, 배열 [-2, 1, -3, 4, -1, 2, 1, -5, 4]가 주어진다면, 최대 부분 배열 합은 6이며, 그 부분 배열은 [4, -1, 2, 1]입니다. 카데인 알고리즘 (Kadane's Algorithm)이 문제는 카데인 알고리즘(Kadane’s Algorithm)을 사용하여 O(n)의 시간 복잡도로 해결할 수 있다. 카데인..
IPC (Inter-Process Communication) IPC(Inter-Process Communication)는 프로세스 간 통신을 의미하며, 하나 이상의 프로세스가 서로 데이터를 주고받는 방법을 제공한다. 현대 운영 체제에서 여러 프로세스가 동시에 실행되며, 프로세스들이 각자의 고유한 메모리 공간을 가지기 때문에, 직접적으로 메모리를 공유하지 않는다. 따라서 서로 간에 정보를 교환하거나 협력해야 할 경우 IPC 메커니즘을 통해 통신해야 한다.IPC는 동일한 시스템 내의 프로세스들 또는 네트워크를 통한 서로 다른 시스템 간의 프로세스들이 통신할 때 사용된다. IPC의 필요성각 프로세스는 운영 체제에 의해 독립적인 메모리 공간을 할당받는다. 이 때문에 하나의 프로세스에서 다른 프로세스의 메모리 영역에 직접 접근할 수 없다. 그러나 많은 응용 프로그램은 여러..
TCP's 3-way handshake, 4-way handshake TCP의 3-way 핸드셰이크(3-way handshake)와 4-way 핸드셰이크(4-way handshake)는 TCP(Transmission Control Protocol)에서 연결을 설정하고 해제하는 과정이다. 이 두 과정은 TCP가 신뢰성 있는 통신을 제공하는 데 중요한 역할을 한다. 1. TCP 3-way 핸드셰이크 (연결 설정 과정)3-way 핸드셰이크는 클라이언트와 서버 간에 TCP 연결을 설정하는 과정이다. 이 과정에서 클라이언트와 서버는 서로 통신할 준비가 되었음을 확인하고, 통신을 위한 시퀀스 번호를 교환하여 데이터 전송을 준비한다.단계별 설명SYN (Synchronize):클라이언트는 서버에 TCP 연결을 요청하기 위해 SYN 플래그가 설정된 패킷을 서버로 보낸다. 이 패킷에는 클라..
최장 공통 부분 수열 (Longest Common Subsequence, LCS) 최장 공통 부분 수열 (LCS) 문제는 두 개의 문자열이 주어졌을 때, 두 문자열에서 순서를 유지하며 공통으로 나타나는 가장 긴 부분 수열을 찾는 문제이다. 부분 수열(subsequence)은 원래 문자열에서 순서를 유지하면서 일부 문자를 선택하여 만든 새로운 문자열이며, 문자가 반드시 연속할 필요는 없다.예시두 문자열 A = "ABCBDAB"와 B = "BDCAB"가 주어졌을 때:A에서 "BCAB"가 B에서의 "BCAB"와 일치한다.이때 최장 공통 부분 수열은 "BCAB"이며, 그 길이는 4이다.LCS 문제의 이론적 배경LCS 문제는 다음과 같은 특성을 가지고 있다:최적 부분 구조 (Optimal Substructure):문제의 최적 해가 그 하위 문제의 최적 해로 구성될 수 있는 성질이다. 즉, 두 ..
TCP 와 UDP TCP (Transmission Control Protocol)와 UDP (User Datagram Protocol)는 인터넷에서 데이터를 전송하기 위해 사용되는 두 가지 주요 프로토콜이다. 이 두 프로토콜은 모두 IP(Internet Protocol) 위에서 동작하며, 서로 다른 방식으로 데이터를 전송한다. 1. TCP (Transmission Control Protocol)TCP란?TCP는 연결 지향적(Connection-oriented) 프로토콜로, 데이터의 신뢰성을 보장하는 프로토콜이다. 패킷 손실, 중복 패킷, 순서가 잘못된 패킷 등의 문제를 처리하여 데이터를 안전하게 전달한다.TCP는 데이터를 스트림(Stream) 형태로 전송하며, 흐름 제어 및 혼잡 제어 기능을 가지고 있어 네트워크 환경에서..

728x90