본문 바로가기

분류 전체보기135

[Math] 부분집합과 멱집합 / Java 부분집합(Subset)과 멱집합(Power Set) 집합 A와 B가 있을 때, B의 특정 원소 x가 반드시 A의 원소이면 B를 A의 부분집합이라고 합니다. 그리고 이러한 부분집합(Subset)의 모든 경우의 수로 구성된 집합을 멱집합이라고 합니다. 부분집합을 Power Set으로 부르는 경우가 있는데 엄밀히 따지면 부분집합과 멱집합은 구분되는 개념입니다. 구현 구현 방식은 다음 두 가지가 있습니다. 재귀와 방문배열을 활용한 방식 비트마스킹을 활용한 방식 Java Code public class PowerSet { static int[] arr = {1, 2, 3}; static int n = arr.length; // 주어진 수의 갯수 static boolean[] visited = new boolean.. 2023. 8. 14.
[Math] 순열(Permutation) / Java 순열(順列) 순서를 고려해 나열한 경우의 수. 즉, 서로 다른 n개 중 r개를 골라 순서를 정해 나열하는 경우의 수(nPr)를 의미합니다. 예를 들어, 다섯 명의 학생 중 반장 1명과 부반장 1명을 뽑는 경우의 수를 구하는 것이 순열에 해당한다고 볼 수 있습니다. 공식은 다음과 같습니다. 구현 주어진 수의 배열이 1, 2, 3일 때 두 개를 뽑는 순열의 경우의 수를 출력하는 코드입니다. 구현 방식은 두 가지입니다. 재귀와 방문배열을 활용한 방식 비트마스킹을 활용한 방식 // 순열(nPr) - n개의 값 중 r개를 순서대로 뽑는 경우의 수 public class Permutation { static int[] arr = {1, 2, 3}; static int n = arr.length; // 주어진 수의 .. 2023. 8. 13.
[OS] 멀티 스레드의 장단점 멀티 스레드란? 하나의 응용 프로그램을 여러 개의 스레드로 구성하고, 각 스레드가 하나의 작업을 처리하도록 하는 구조 멀티 스레드의 장점 멀티 프로세스보다 적은 메모리 공간을 차지하고 context switch가 빠르다. context switch: 현재까지의 작업 상태나 다음 작업에 필요한 각종 데이터를 저장하고 읽어오는 작업 context switch에 걸리는 시간이 클수록 멀티스레딩의 효율은 떨어진다. 프로세스 내에서 자원을 공유하여 자원 중복을 최소화 전역변수 공간이나 Heap 영역을 통해 데이터를 주고 받을 수 있다. Stack 영역을 제외한 모든 영역이 메모리를 공유한다. 멀티 스레드의 단점 스레드 간 자원을 공유하기 때문에, 하나의 스레드만 종료되어도 전체 스레드가 영향을 받을 수 있다. 동.. 2023. 8. 8.
[Network] HTTP와 HTTPS HTTP (HyperText Transfer Protocol) HTTP는 서버와 클라이언트 간에 데이터를 주고 받는 프로토콜이다. *프로토콜 : 컴퓨터 간 데이터 교환 방식을 정의하는 규칙 체계이다 텍스트, 이미지, 영상 등 다양한 형태의 데이터를 전송할 수 있다. 다만, 전송 과정에서 따로 데이터를 암호화하지 않기에 데이터가 탈취되었을 시 보안 상 문제가 발생할 수 있다. 이러한 문제를 해결하기 위해 등장한 것이 HTTPS 이다. HTTPS (HyperText Transfer Protocol Secure) 기존 HTTP는 전송계층의 TCP 위에서 동작하는데, 여기서 SSL(Secure Sockets Layer)이라는 보안계층이 전송계층 위에 올라가 동작하게 된다. 그래서 이를 SSL 암호화 통신 이라고.. 2023. 8. 8.